问题
执行下面指令,观察每条指令执行的结果
MOV AX, 2000 ; AL=
MOV DS, AX ; DS=
NOT AX ; AX=
XOR AX, AX ; AX=
DEC AX ; AX=
INC AX ; AX=
MOV BX, 2030 ; BH=
MOV SI, BX ; SI=
MOV [SI], BL ; [2030H]=
MOV WORD PTR[SI], 10F ; [2030H]= [2031H]=
MOV DI, SI ; DI=
MOV [DI+50], BH ; [DI+50H]=
MOV BH, [SI] ; BH=
MOV BL, [DI+50] ; BL=
MOV SP, 5000
PUSH AX ; AX= [SS:4FFEH]= [SS:4FFFH]=
PUSH BX ; BX= [SS:4FFCH]= [SS:4FFDH]=
POP AX ; AX=
POPF ; F=
NEG BX ; BX=
XCHG BX, AX ; BX=
STD ; F=
STI ; F=
CLD ; F=
CLI ; F=
ADC DI, 2050 ; DI= F=
ADC SP, DI ; SP= F=
ADC AX, 1500 ; AX= F=
SUB AX, BX ; AX= BX=
SHL AH, 1 ; AH=
RCL AX, 1 ; AX=
SHR BH, 1 ; BH=
RCR BL, 1 ; BL=
MOV CL, 4
MOV DX, 80F0
ROL DX, CL ; DX= CL=
INT 20 ; CS= IP=
实验步骤
-a 输入上面
注意 debug下数字默认的是16进制,而且后面不需要带有H或者h,不区分大小写
输入完之后直接按空格就行进入- 状态
-t 单步调试
-d[地址] 查看内存的内容
实验结果
MOV AX, 2000 ; AL=00,AH=20,mov 数据传输指令
MOV DS, AX ; DS=2000
NOT AX ; AX=dfff,not按位取非运算
XOR AX, AX ; AX=0000,xor按位异或,
DEC AX ; AX=ffff 自减(-1),用补码表示-1
INC AX ; AX=0000 自增(+1)
MOV BX, 2030 ; BH=20
MOV SI, BX ; SI=2030
MOV [SI], BL ; [2030H]=0030
MOV WORD PTR[SI], 10F ; [2030H]= 0f [2031H]=01
MOV DI, SI ; DI=2030
MOV [DI+50], BH ; [DI+50H]=20
MOV BH, [SI] ; BH=0f
MOV BL, [DI+50] ; BL=20
MOV SP, 5000 ;sp=5000 sp是栈指针ss 是堆栈段地址
PUSH AX ; AX=0000 [SS:4FFEH]=00 [SS:4FFFH]=00 ,push压栈操作
PUSH BX ; BX=0f20 [SS:4FFCH]=20 [SS:4FFDH]=0f
POP AX ; AX=0f20 将栈顶内容弹到ax
POPF ; F=(NV,UP,DI,PL,NZ,NA,PO,NC) 将栈顶内容弹到标记寄存器
NEG BX ; BX=f0e0 neg求补指令,相当于bx = 0 - bx
XCHG BX, AX ; BX=0f20 xchg将bx,ax的内容互换
STD ; F=(NV,DN,EI,NG,NZ,NA,PO,CY) 置位 DF=1
STI ; F=(NV,DN,EI,NG,NZ,NA,PO,CY) 置位中断 IF=1
CLD ; F=(NV,UP,EI,NG,NZ,NA,PO,CY) 复位方向 DF=0
CLI ; F=(NV,UP,DI,NG,NZ,NA,PO,CY) 复位中断 IF=0
ADC DI, 2050 ; DI=4081 F=(NV,UP,DI,PL,NZ,NA,PE,NC) 带进位的加法指令
ADC SP, DI ; SP=9081 F=(OV,UP,DI,NG,NZ,NA,PE,NC)
ADC AX, 1500 ; AX=05E0 F=(NV,UP,DI,PL,NZ,NA,PO,CY)
SUB AX, BX ; AX=F6C0 BX=0F20 F=(NV,UP,DI,NG,NZ,NA,PE,CY) 减法
SHL AH, 1 ; AH=EC AX=C0 将ah逻辑左移1位
RCL AX, 1 ; AX=D981 将ax 带进位循环左移1位
SHR BH, 1 ; BH=07 BX=20 将BH逻辑右移1位
RCR BL, 1 ; BL=90 BH=07 将BL带进位循环右移1位
MOV CL, 4 ;CL=04 CH=00
MOV DX, 80F0 ;DX=80F0
ROL DX, CL ; DX=0F08 CL=04 将dx不带进位循环左移4位
INT 20 ; CS=00A7 IP=1072 中断,cs,ip 依程序运行具体而言