王爽汇编语言(第2版)实验1
2.实验任务
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。
注意在进入debug模式时 AX 和 BX 的初始数据为 0000H
机器码 汇编指令
b8 20 4e mov ax,4E20H 使用T命令读入指令后 IP = IP + 3 执行指令后 AX=4E20H
05 16 14 add ax,1416H 使用T命令读入指令后 IP = IP + 3 执行指令后 AX=6236H
bb 00 20 mov ax,2000H 使用T命令读入指令后 IP = IP + 3 执行指令后 AX =2000H
01 d8 add ax,bx 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2000H,BX=0000H
89 c3 mov bx,ax 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2000H,BX=2000H
01 d8 add ax,bx 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=4000H,BX=2000H
b8 1a 00 mov ax,001AH 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=001AH,BX=2000H
bb 26 00 mov bx,0026H 使用T命令读入指令后 IP = IP + 3 执行指令后 AX=001AH,BX=0026H
00 d8 add al,bl 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0040H,BX=0026H
00 dc add ah,bl 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2640H,BX=0026H
00 c7 add bh,al 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2640H,BX=4026H
b4 00 mov ah,0 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0040H,BX=4026H
00 d8 add al,bl 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0066H,BX=4026H
04 9c add al,9CH 使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0002H,BX=4026H
注意,以上结果是102H,担al是8位寄存器,高位1不能存放在al中
提示,可用E命令和A命令以两种方式将将指令写入内存。注意用T命令执行时,CS:IP的指向。
(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
进入debug模式
用A命令写入汇编指令到2000:0开始的内存单元,见图:

用R命令修改CS:IP指向2000:0,见图:

用T命令执行CS:IP指向的指令,需要执行T命令16次来计算2的8次方,见图:

指令执行序列为:
1. mov ax,1
2. add ax,ax
3. jmp 2000:0003
4. 转到第2步执行
(3)查看内存中的内容。
PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。
提示,如果读者对实验的结果感到疑惑请仔细阅读第1章中的1.15节。
根据给出的物理地址算出段地址
存放主板日期的起始地址(基础地址)为FFF00H,段地址为:FFF00H / 10H = FFF0H
FFF0H x 16 + 00FFH = FFFFFH (结束物理地址)
我们要查找生产日期的段地址范围是 FFF0:0000 ~ FFF0:00FF

尝试修改生产日期失败。
(4)向内存从B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
提示,如果读者对实验的结果感到疑惑,请仔细阅读第1章中的1.15节。
输入 -e B810:0000 01 01 02 02 03 03 04 04 时产生图像:

输入 -e B810:0000 30 30 31 31 32 32 33 33 时产生图像:

根据1.15节的内容,B81000是属于显存在内存地址空间中内存单元,向它写入数据时,就是向显存中写入数据,计算机会将可打印的字符输出到屏幕上