汇编习题参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

部分习题参考答案

1.5 下列各数均为十进制数,请采用8位二进制补码运算,并回答标志寄存器FLAGS中CF和OF

的值,运算结果所代表的十进制数是多少?如果用16位二进制补码运算,其结果所代表的

十进制数是多少?FLAGS中CF和OF的值呢?

(1)85+69 (2)85+(-69) (3)85-(-69) (4)85-(69)

85=55H,69=45H,-69=BBH,

8位二进制补码运算:

(1)85+69 =55H+45H=9AH, CF=0,OF=1

(2)85+(-69)=55H+BBH=110H,CF=1,OF=0

其余略

1.6实模式下,写出段地址和偏移地址为1234:2002、1430:0042、FF00:0FFF的物理地址。

1234:2002=12340+2002=14342

1430:0042=14300+0042=14342

FF00:0FFF=FF000+0FFF=FFFFF

1.7已知8086系统某存储单元物理地址为:52506H,你认为段基址的最大值、最小值分别是多

少? 8086微机最多可以有多少个不同的段基址?

52506=5250:0006, 段基址的最大值=5250

52506=4251:FFF6, 段基址的最小值=4251

1.8从物理地址为00100H开始到00103H单元中顺序存放的数据为:12H,34H,56H,78H。请画

出数据存放示意图,并回答以下问题:

(1)写出00101H字节单元的内容

(00101)= 34H

(2)写出00102H字单元的内容

(00102)= 7856H

习题3

3.1 分别说明8086处理器中各寄存器的名称和作用是什么?

3.2 溢出标志OF与进位标志CF有何作用和区别?

3.3 何为段地址?何为有效地址?何为物理地址?用指令举例说明。

3.4 带符号数比较大小,当AX < BX时程序转向标号L1,若前导指令为CMP AX, BX

后续指令应为什么?若视为二个无符号数比较大小, 后续指令应为什么?

带符号数:JL L1, 无符号数:JB L1

3.5 ADD指令和ADC指令在什么情况下是一样的结果?

CF=0

3.6 说出CALL指令和INT 21H指令的操作,有何异同?

CALL把断点压入堆栈,不一定是远调,INT 21H还要把FLAGS压入堆栈,且是远调,总入口地址为84H内存中的两个字。

3.7 除了用4CH号系统功能调用结束程序的执行并退出,还有哪些办法?

RET指令,INT 20H

3.8指出下列错误的指令,说出错误原因,并给出合适的修改。

(1) MOV AX,[DX] / MOV AX,[BX]

(2) MOV DS,DATA / MOV DS,BX

(3) MOV CS,AX / MOV ES,AX

(4) MOV AX,DL / MOV AL,DL

(5) PUSH AL / PUSH AX

(6) ADD [BX],[DI] / ADD [BX],DI

(7) LEA [BX],[2000H] / LEA BX,[2000H]

(8) MOV [BX],OFFSET [2000H]

(9) MOV [SI],2 / MOV BYTE PTR [SI],2

(10) MUL BX,CX / MUL BX

(11) DIV 5 / DIV BX

(12) MOV BYTE[SI],2 / MOV BYTE PTR [SI],2

(13) MOV AX,[SI+DI] / MOV AX,[BX+SI]

(14) SHR AX,4 / SHR AX,1

(15) CMP 6,AX / CMP AX,6

(16) MOV [FFFF],AX / MOV [FFFE],AX

(17) MOV AX,BX+4 / MOV AX,[BX+4]

(18) JMP FAR PRO / JMP FAR PTR PRO

3.9假定(DS)=1200H,(SS)=4400H, (BX)=463DH,(BP)=2006H, (SI)=6A00H,位移量D=4524H,以AX寄存器为目的操作数,试写出以下各种寻址方式下的传送指令,并确定源操作数的有效地址EA和物理地址。

(1)立即寻址;操作数的EA就是指令的EA/操作数在指令中/无EA

(2)直接寻址;EA=4524H,物理地址=DS:4524

(3)使用BX的寄存器寻址;无EA

(4)使用BX的间接寻址;EA=463DH,物理地址=DS:463D

(5)使用BP的寄存器相对寻址;MOV AX,[BP+4524],EA=2006+4524,

物理地址=SS:EA

(6)基址变址寻址;MOV AX,[BX+SI],EA= BX+SI,物理地址=DS:EA

(7)相对基址变址寻址;MOV AX,[4524+BX+SI],EA=4524+BX+SI,

物理地址=DS:EA

3.10用一条指令完成以下操作。

(1)把BX寄存器和DX寄存器的内容相加,结果存人DX寄存器中。

ADD DX,BX

(2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。

ADD AL,[BX+SI]

(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和AX寄存器的内容互换。

XCHG AX,[BX+0B2]

(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中。

ADD WORD PTR [524], 2A59H

3.11在数据段定义了ARRAY数组,其中依次存储了五个字数据,请用以下寻址方式的指令把第4个字送AX寄存器。

(1)直接寻址

MOV AX,ARRAY+6 或MOV AX,[ARRAY+6]

(2)使用BX的间接寻址

LEA BX,ARRAY+6 ;MOV AX,[BX]

(3)使用BX的寄存器相对寻址

LEA BX,ARRAY ;MOV AX,[BX+6]

(4)基址变址寻址

LEA BX,ARRAY ; MOV SI,6 ; MOV AX,[BX+SI]

3.12画出数据在数据段中的存放情况,程序执行后,BX、DI、CX、DX寄存器中的内容是什么? 程序如下:

data segment

array dw 20,30,40,20h,30h,-6

相关文档
最新文档