汇编语言检测点3.1
建议先自己思考问题的答案,不懂则返回看书
下面的程序执行前,AX = 0, BX = 0,写出每条汇编指令执行完后相关寄存器中的值。
Mov ax,1
Mov ds,ax
Mov ax,[0000] ;AX=2662
Mov bx,[0001] ;BX=E626
Mov ax,bx ;AX=E626
Mov ax,[0000] ;AX=2662
Mov bx,[0002] ;BX=D6E6
Add ax,bx ;AX=FD48
Add ax,[0004] ;AX=2C14
Mov ax,0 ;AX=0000
Mov al,[0002] ;AX=00E6
Mov bx,0 ;BX=0000
Mov bl,[000C] ;BX=0026
Add al,bl ;AX=000C
2.内存中的情况如下图所示
各寄存器的初始值: CS=2000H,IP=0,DS=1000H,AX=0,BX=0;
(1)(2)CPU执行的指令序列,及CS、IP、相关寄存器的值
;CS=2000H,IP=0H
mov ax,6622H ;执行后CS=2000H,IP=3H,AX=6622H
jmp 0FF0:0100 ;执行前(读取后)CS=2000H, IP=8H,执行后CS=0FF0H,IP=0100H (即CS=1000H,IP=0H)
mov ax,2000H ;执行后CS=1000H,IP=3H,AX=2000H
mov ds,ax ;执行后CS=1000H,IP=5H,ds=2000H
mov ax,[0008] ;执行后CS=1000H,IP=8H,AX=C189H
mov ax,[0002] ;执行后CS=1000H,IP=BH,AX=EA66H
(3)程序和数据是没有区别的,都是以二进制的形式保存,如何确定呢。
可以理解为 段地址+偏移地址 指向的是数据,CS+IP 指向的是程序