计算机组成原理与汇编语言程序设计课后习题答案(第2版)

更新时间:2023-12-09 18:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 10111010 + 05B H 01011011 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

(1)MOV AL,0F5H 正确

(2)ADD [BX][BP],BX 错误,不能同时使用[BX][BP]进行寻址

(3)CMP AL,100H 错误,AL为8位,100H大于8位,类型不匹配。 (4)TEST [BP],DL 正确

(5)ADC 15,CL 错误,目的操作数不能是立即数

(6)SUB [DI],DA_WORD 错误,两个操作数不能同时是存储器操作数。 (7)OR CH,CL 正确

(8)MOV AL,1000H 错误,AL为8位,1000H为16位,类型不匹配。 (9)SAR 10H[DI],2 错误,AL为8位,移位多次必须CL中。 (10)NOT AL,BL 错误,逻辑非操作是单操作指令。 (11)DEC CX,1 错误,逻辑非操作是单操作指令。

(12)LEA ES,TAB[BX] 错误,目的寄存器只能是通用寄存器。 4-13、根据下列要求,写出相应的汇编指令

答案:

(1)ADD 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 CL,20H[BX][SI]

有效地址EA=20H+[BX]+[SI] =20H+0024H+0012H=0056H 逻辑地址 DS:0056H

物理地址=091D0H+0056H=09226H (逻辑地址左移1为加有效地址) CL=[09226H]=0F6H

(2) MOV [BP][DI],CX

有效地址EA=[BP]+[DI] =0024H+0032H=0056H 逻辑地址 SS:0056H

物理地址=1E4A0H+0056H=1E4F6H [1E4F6H]=CX=5678H

(3) LEA BX,20H[BX][SI] MOV AX,2[BX]

有效地址EA=20H+[BX]+[SI] =20H+0024H+0012H=0056H BX=0056H

有效地址EA=2H+[BX]=2H+0056H=0058H 逻辑地址 DS:0058H

物理地址=091D0H+0058H=09228H AX=[09228H]=1E40H (4) LDS SI,[BX][DI] MOV [SI],BX

有效地址EA=[BX]+[DI] =0024H+0032H=0056H 逻辑地址 DS:0056H

物理地址=091D0H+0056H=09226H SI=[09226H]=00F6H

DS=[09226H+2H]=[09228H]=1E40H 有效地址EA=[SI]= 00F6H 逻辑地址 DS:00F6H

物理地址=1E400H+00F6H=1E4F6H [1E4F6H]=BX=0024H

(5) XCHG CX,32H[BX] XCHG 20H[BX][SI],AX

有效地址EA=32H+[BX] =32H+0024H=0056H 逻辑地址 DS:0056H

物理地址=091D0H+0056H=09226H CX=[09226H]=00F6H [09226H]=5678H

有效地址EA=20H+[BX]+[SI] =20H+0024H+0012H=0056H 逻辑地址 DS:0056H

物理地址=091D0H+0056H=09226H [09226H]= 1234H AX=5678H

4-16 (01400)=1234H应改为(01410)=1234H

分析:有效地址EA=10H+[SI]= 10H+0400H=0410H

逻辑地址 DS:0100H

物理地址=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写出执行以下计算的指令序列,其中X,Y,Z,R和W均为存放16位带符号数单元的地址。

(1) Z←W+(Z-X) (2) Z←W-(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 ;把W送到AX

IMUL X ;W*X 注意:低十六位保存在AX里,高十六位保存在DX里 MOV BX,Y ;把Y送到BX 里 ADD BX,6 ;Y+6

IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX里,余数保存在DX里

MOV Z,AX ;把商送到Z中, MOV R,DX ;把余数 送到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单元内中。 X、Y、Z、R、W分别为存放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

本文来源:https://www.bwwdw.com/article/xvc5.html

Top