欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编实验一

程序员文章站 2022-06-17 11:56:52
...

汇编实验一

问题

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

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 依程序运行具体而言
相关标签: asm