(1)在debug中,用“d 0:0 1f"查看内存结果如下
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
下面的程序执行前,AX=0, BX=0,写出每条汇编指令执行完成后相关寄存器中的值。
mov ax,1
mov ds,ax
mov AX,[0000] --------AX=2662H
MOV BX,[0001] --------BX=E626H
MOV AX,BX --------AX=E626H
MOV AX,[0000] --------AX=2662H
MOV BX,[0002] --------BX=D6E6H
ADD AX,BX --------AX=FD48H
ADD AX,[0004] --------AX=2C14H
MOV AX,0 --------AX=0
MOV AL,[0002] --------AX=00E6H
MOV BX,0 --------BX=0
MOV BL,[000C] --------BX=0026H
ADD AL,BL --------AX=000CH
提示,注意ds设置。解题步骤:首先用-e命令修改0:0 ---1F中的内容,头两行命令已经设DS为1 那么当mov ax,[0000]执行时则从 1*10h+0处的内存单元开始读写。
(2)
寄存器初始值: CS=2000H ,IP=0, DS=1000H, AX=0, BX=0;
因计算机从CS*10H+IP处读取一条指令并执行
所以开始指令为:
MOV ax,6622h 执行后 CS=2000H,IP=0003H,DS=1000H, AX=6622H,BX=0
jmp 0ff0:0100 执行后 CS=00F0H,IP=0100H,DS=1000H, AX=6622H, BX=0
mov ax,2000h 执行后 cs=00f0h,IP=0103H,DS=1000H, AX=2000H, BX=0
mov ds,ax 执行后 CS=00F0H,IP=0105H,DS=2000H, AX=2000H, BX=0
mov ax,[0008] 执行后 CS=00FOH,IP=0108H,DS=2000H, AX=C389H, BX=0
mov ax,[0002] 执行后 CS=00FOH,IP=010BH,DS=2000H, AX=EA66H, BX=0
惭愧。。。时搁一年又继续学习了。汇编一直在努力
- [fpamc] 欢迎归来! 作业正确。 06/28 12:48
- [fpamc] 对的, 居然,,这么长时间了,。 06/28 12:47
- [游客] 用本章学的debug验证一下,一举两得。 12/15 12:00
- [游客] 回答正确。 04/15 09:35