汇编实验一:观察每条指令执行的结果

问题

执行下面指令,观察每条指令执行的结果

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 依程序运行具体而言
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值