汇编清华版习题参考答案.docx

上传人:b****5 文档编号:2897042 上传时间:2022-11-16 格式:DOCX 页数:50 大小:41.69KB
下载 相关 举报
汇编清华版习题参考答案.docx_第1页
第1页 / 共50页
汇编清华版习题参考答案.docx_第2页
第2页 / 共50页
汇编清华版习题参考答案.docx_第3页
第3页 / 共50页
汇编清华版习题参考答案.docx_第4页
第4页 / 共50页
汇编清华版习题参考答案.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

汇编清华版习题参考答案.docx

《汇编清华版习题参考答案.docx》由会员分享,可在线阅读,更多相关《汇编清华版习题参考答案.docx(50页珍藏版)》请在冰豆网上搜索。

汇编清华版习题参考答案.docx

汇编清华版习题参考答案

汇编部分习题参考答案

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

后续指令应为什么?

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

带符号数:

JLL1,无符号数:

JBL1

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

CF=0

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

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

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

RET指令,INT20H

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

(1)MOVAX,[DX]/MOVAX,[BX]

(2)MOVDS,DATA/MOVDS,BX

(3)MOVCS,AX/MOVES,AX

(4)MOVAX,DL/MOVAL,DL

(5)PUSHAL/PUSHAX

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

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

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

(9)MOV[SI],2/MOVBYTEPTR[SI],2

(10)MULBX,CX/MULBX

(11)DIV5/DIVBX

(12)MOVBYTE[SI],2/MOVBYTEPTR[SI],2

(13)MOVAX,[SI+DI]/MOVAX,[BX+SI]

(14)SHRAX,4/SHRAX,1

(15)CMP6,AX/CMPAX,6

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

(17)MOVAX,BX+4/MOVAX,[BX+4]

(18)JMPFARPRO/JMPFARPTRPRO

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的寄存器相对寻址;MOVAX,[BP+4524],EA=2006+4524,

物理地址=SS:

EA

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

EA

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

物理地址=DS:

EA

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

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

ADDDX,BX

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

ADDAL,[BX+SI]

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

XCHGAX,[BX+0B2]

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

ADDWORDPTR[524],2A59H

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

(1)直接寻址

MOVAX,ARRAY+6或MOVAX,[ARRAY+6]

(2)使用BX的间接寻址

LEABX,ARRAY+6;MOVAX,[BX]

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

LEABX,ARRAY;MOVAX,[BX+6]

(4)基址变址寻址

LEABX,ARRAY;MOVSI,6;MOVAX,[BX+SI]

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

程序如下:

datasegment

arraydw20,30,40,20h,30h,-6

buffdb‘abcd$’

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movbx,array+1

movdi,offsetarray

movcx,[di+5]

movdl,buff+3

movah,4ch

int21h

codeends

endstart

1E,00,00,00,20,00,00,64

3.13在DEBUG下设置(SP)=20H,设置AX、BX、CX、DX为不同值,把这四个寄存器内容依次压入堆栈,再从堆栈中依次弹出到SI、DI、BP、BX寄存器。

写出一段程序实现上述操作,并画出每条入栈指令执行后SP和堆栈中数据的变化。

3.14求出7450H与以下各十六进制数的和及差,并根据结果标出SF、ZF、CF、OF标志位的值。

(1)1234H

(2)5678H(3)9804H(4)E0A0H

SF、ZF、CF、OF

(1)1234H+7450H,1001

(2)5678H+7450H,1001

(3)9804H+7450H,0010

(4)E0A0H+7450H,0010

3.15在数据段有如下定义:

DATAXDW?

,?

DATAYDW?

,?

SUMDW?

,?

,?

,?

请用16位指令按下列要求写出指令序列:

(1)DATAX和DATAY两个字数据相加,和存放在SUM中。

MOVAX,DATAX

ADDAX,DATAY

MOVSUMAX

(2)DATAX和DATAY两个双字数据相加,和存放在SUM开始的字单元中。

MOVAX,DATAX

MOVDX,DATAX+2

ADDAX,DATAY

ADCDX,DATAY+2

MOVSUM,AX

MOVSUM+2,DX

(3)DATAX和DATAY两个字数据相乘(用MUL),积存放在SUM开始的字单元中。

(4)DATAX和DATAY两个双字数据相乘(用MUL),积存放在SUM开始的字单元中。

(5)DATAX双字除以字DATAY(用DIV),商和余数存放在SUM开始的字单元中。

(6)DATAX和DATAY两个压缩BCD码数据相加,和存放在SUM中。

3.16双字长数X存放在DX和AX中,设(DX)=1004H,(AX)=1002H,要求用16位指令写出:

(1)对存放在DX和AX中的双字长数求补的指令序列,并验证结果。

NOTAX

NOTDX

ADDAX,1

ADCDX,0

(2)用减法指令求0-X的指令序列,并验证结果。

MOVBX,0

MOVCX,0

SUBBX,AX

SBBCX,DX;结果在CX,BX

3.17试编写一个程序求出双字长数的绝对值。

双字长数在A开始的字单元中,结果存放在B开始的字单元中。

ADW?

,?

BDW?

,?

MOVAX,A

MOVDX,A+2

TESTDX,8000H

JZZS

NOTAX

NOTDX

ADDAX,1

ADCDX,0

ZS:

MOVB,AX

MOVB+2,DX

3.18用移位指令为主实现对AX中的无符号数乘以5,不考虑乘积可能超出16位。

MOVDX,AX

MOVCL,2

SHLAX,CL

ADDAX,DX

3.19用移位指令为主实现对AX中的无符号数乘以5,考虑乘积可能超出16位的情况。

提示:

用DX接AX左移的位,32位操作。

3.20把AX中的内容依次倒排序,即第0位移到第15位,第1位移到第14位,…。

 

3.21在数据段有如下定义:

BUFFDB‘ABCD$EFGHIJK$’

STR1DB12DUP(?

LENDB?

用串指令编写程序完成以下操作:

(1)对字符串STR1全部置空格符。

MOVAX,DATA

MOVDS,AX

MOVAL,20H

LEADI,STR1

MOVCX,STR1-BUFF

CLD

REPSTOSB

(2)从左到右把BUFF中的字符串传送到STR1。

MOVAX,DATA

MOVDS,AX

MOVES,AX

CLD

LEASI,BUFF

LEADI,STR1

MOVCX,STR1-BUFF

REPMOVSB

(3)从右到左把BUFF中的字符串传送到STR1。

MOVAX,DATA

MOVDS,AX

MOVES,AX

STD

LEASI,STR1-1

LEADI,LEN-1

MOVCX,STR1-BUFF

REPMOVSB

(4)比较BUFF与STR1两个字符串是否相等,如相等则DX=1,否则DX=0。

MOVAX,DATA

MOVDS,AX

MOVES,AX

CLD

LEASI,BUFF

LEADI,STR1

MOVCX,STR1-BUFF

REP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1