本答案经本人简单作答、整理、修改(并是标准答案),仅供同学参考,欢迎同学提出宝贵意见。
4.10给定(BX=637DH,(SI=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么
答案:
1)立即寻址                  没有  ip的内容
2)直接寻址                  7237H    ;MOV  AX,[7237h]
3)使用BX的寄存器寻址        没有    ;MOV  AX,BX
4)使用BX的间接寻址          637DH    ;MOV  AX,[BX]
5)使用BX的寄存器相对寻址    0D5B4H    ;MOV  AX,D[BX]
(6) 基址变址寻址              8E18H    ;MOV  AX,[BX][SI]
7)相对基址变址              004FH    ;MOV  AX,D[BX][SI]
4.11.求执行两条指令后,各标志位的状态
MOV  AL,91            ;执行后,(AL)=91=5BH
ADD  AL,0BAH
加法执行如下:
        0BA        H            1011 1010
+        05B        H            0101 1011
        115        H          1 0001 0101
CF:显然最高位产生了进位(两个加数都是两位的,和却有三位),CF=1
AF:低四位向高四位产生了进位(A+B产生进位),AF=1
ZF:运算结果不为0,ZF=0
SF:运算结果最高位为0(高四位:1H=0001B),SF=0
OF:+=正(两个加数的符号位不同),没有溢出,OF=0
4-12
1MOV  AL0F5H  正确
  2ADD  [BX][BP]BX  错误,不能同时使用[BX][BP]进行寻址
  3CMP  AL100H  错误,AL8位,100H大于8位,类型不匹配。
  4TEST [BP]DL  正确
  5ADC  15CL    错误,目的操作数不能是立即数
  6SUB  [DI]DA_WORD  错误,两个操作数不能同时是存储器操作数。
  7OR  CHCL  正确
  8MOV  AL1000H  错误,AL8位,1000H16位,类型不匹配。
  9SAR 10H[DI]错误,AL8位,移位多次必须CL中。
  10NOT ALBL  错误,逻辑非操作是单操作指令。
  11DEC CX错误,逻辑非操作是单操作指令。
  12LEA ESTAB[BX]  错误,目的寄存器只能是通用寄存器。
4-13、根据下列要求,写出相应的汇编指令
答案:
(1ADD AL,[BX][SI]
(3)ADD [BX][0B2H], CX
(4)MOV AX,2A59H
ADD [0524H] ,AX
(5)ADD AL ,0B5H 
4-14
答案:
1)寄存器间接寻址
MOV BX, OFFSET TABLE
ADD BX, 08H
MOV DX ,[BX]
2)寄存器相对寻址
MOV SI,O8H
MOV DX,[TABLE][SI]
(3)基址变址寻址
MOV BX , TABLE
MOV SI,O8H
MOV DX,[BX][SI]
4-15 15、假设(DS=091DH,(SS=1E4AH,(AX=1234H,(BX=0024H,(CX=5678H,(BP=0024H,(SI=0012H,(DI=0032H,(09226H=00F6H,(09228H=1E40H,(1E4F6H=091DH。试给出下列各指令或程序段的分别执行的结果。
答:
1      MOV  CL20H[BX][SI] 
有效地址EA= 20H+[BX]+[SI] =20H+0024H+0012H=0056H
逻辑地址 DS0056H
物理地址=091D0H+0056H=09226H  (逻辑地址左移1为加有效地址)
CL=[09226H]=0F6H
2      MOV  [BP][DI]CX 
有效地址EA= [BP]+[DI] =0024H+0032H=0056H
逻辑地址 SS0056H
物理地址=1E4A0H+0056H=1E4F6H
[1E4F6H]=CX=5678H 
3      LEA  BX20H[BX][SI]
MOV  AX2[BX]
有效地址EA= 20H+[BX]+[SI] =20H+0024H+0012H=0056H
BX=0056H 
有效地址EA= 2H+[BX]=2H+0056H=0058H
逻辑地址 DS0058H
物理地址=091D0H+0058H=09228H
AX=[09228H]=1E40H 
4      LDS  SI[BX][DI]
MOV  [SI]BX
有效地址EA= [BX]+[DI] =0024H+0032H=0056H
逻辑地址 DS0056H
物理地址=091D0H+0056H=09226H
SI=[09226H]=00F6H
DS=[09226H+2H]=[09228H]=1E40H
有效地址EA= [SI]= 00F6H
逻辑地址 DS00F6H
物理地址=1E400H+00 F6H=1E4F6H
[1E4F6H]=BX=0024H
5      XCHG  CX32H[BX]
XCHG  20H[BX][SI]AX
有效地址EA= 32H+[BX] =32H+0024H=0056H
逻辑地址 DS0056H
物理地址=091D0H+0056H=09226H
CX=[09226H]=00F6H
[09226H]=5678H
有效地址EA= 20H+[BX]+[SI] =20H+0024H+0012H=0056H
逻辑地址 DS0056H
物理地址=091D0H+0056H=09226H
[09226H]= 1234H
AX=5678H
4-16  (01400)=1234H应改为(01410)=1234H
分析:有效地址EA=10H+[SI]= 10H+0400H=0410H
逻辑地址 DS0100H
物理地址=01000H+0410H=01410H
        MOV AX ,10H[SI]  ;传送的是源操作数的内容  AX=1234H
        LEA AX ,10H[SI]    ;传送的是源操作数的有效地址  AX=0410H
4-17
mov ax,1234h            ;1234h这个16进制数放到ax寄存器中
mov bx ,5678h            ;同理,将5678h这个16进制数放到bx这个寄存器中
push ax                  ;ax压栈,即将1234h放到栈顶
push bx                  ;bx压栈,即将5678h放到1234h上面(即栈顶)
pop cx              ;弹出当前栈顶元素(5678h),并将其传送给cx,即(cx)=5678h
4-18写出执行以下计算的指令序列,其中XYZRW均为存放16位带符号数单元的地址。
(1) ZW+Z-X
(2) ZW-X+6-R+9
(3) Z←(W*X/Y+6),R←余数
(4) Z←((W-X/5*Y*2  本题与书上不尽相同参考下题
答案:
(1). MOV AX,Z  ;把Z送到AX
SUB AX,X  Z-X
ADD AX,W    W+(Z-X)
  MOV Z,AX    ;结果保存在Z
(2).MOV AX,R  R送到AX
ADD AX,9  R+9
MOV BX,X  X送到BX
ADD BX,6  X+6
ADD AX,BX  ;(R+9+(X+6),结果保存在AX
MOV BX,W  W送到BX
SUB BX,AX  W-R+9-(X+6),连续减去两个数,相当于减去这两个数的和~~
MOV Z,BX  ;最终结果送到Z
(3).MOV AX;把W送到AX
IMUL X      W*X    注意:低十六位保存在AX里,高十六位保存在DX
MOV BX;把Y送到BX
ADD BXY+6
IDIV BX    ;(W*X汇编table指令什么意思/(Y+6)  注意:商保存在AX里,余数保存在DX
MOV ZAX  ;把商送到Z中,
MOV RDX  ;把余数 送到R
(4).MOV AX,W  ;把W送到AX
SUB AX,X  W-X
CWD        ;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保;在DX 
MOV BX,5  ;把5送到BX
IDIV BX    ;(W-X/5  被除数为32位,除数为16位商为16 
IMUL Y    ;上一步结果再乖以Y,积为32
MOV BX,2  ;把2送到BX 
IMUL BX    ;上一步乘法所得的积再乘以2,各为64
MOV Z,EAX  ;把结果中低32位放入Z双字单元中 ,超出范围
MOV [Z+4],EDX  ;把结果中高32位放入Z+4双字单元中 ,超出范围
请参考下题
试编制一程序,计算下列公式的值,将商存放在Z单元,余数放在R单元内中。 XYZ
RW分别为存放16位带符号数单元的地址。计算过程中中间结果和最后结果在16位二进制数范围内Z =W-Z/5*Y*2
mov ax,W  ;把W送到AX
sub ax,X  W-X
mov bx,2  ;把2送到BX
mul bx    ;先乘以2
push ax    ;保存中间结果W-Z*2
mov ax,5    ;把5送到AX
mul Y      5再乖以Y,乘机在AX
mov bx,ax    5*Y再放到BX
pop ax        ;返回中间结果W-Z*2
xor dx,dx
div bx        ;实现W-Z*2/5*Y),商在AX中,余数在DX

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。