微机原理习 题 2Word下载.docx

上传人:b****5 文档编号:16702718 上传时间:2022-11-25 格式:DOCX 页数:19 大小:23.81KB
下载 相关 举报
微机原理习 题 2Word下载.docx_第1页
第1页 / 共19页
微机原理习 题 2Word下载.docx_第2页
第2页 / 共19页
微机原理习 题 2Word下载.docx_第3页
第3页 / 共19页
微机原理习 题 2Word下载.docx_第4页
第4页 / 共19页
微机原理习 题 2Word下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理习 题 2Word下载.docx

《微机原理习 题 2Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理习 题 2Word下载.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理习 题 2Word下载.docx

(1)FF1DB'

0100'

2+5,?

'

ABC'

(2)FF2DW2DUP(?

),'

A'

BC'

1000H,25H

(3)FF3DB2DUP(1,2DUP(2,3),4)

偏移地址

内容

变量名

0000H

30H

FF1

0001H

31H

0002H

0003H

0004H

07H

0005H

00H

0006H

41H

0007H

42H

0008H

43H

0009H

FF2

000AH

000BH

000CH

000DH

000EH

000FH

0010H

0011H

0012H

10H

0013H

25H

0014H

0015H

01H

FF3

0016H

02H

0017H

03H

0018H

0019H

001AH

04H

001BH

001CH

001DH

001EH

001FH

0020H

2.5指出下列指令的错误。

A1DB?

A2DB10

K1EQU1024

(1)MOVK1,AX

(2)MOVA1,AX

(3)CMPA1,A2(4)K1EQU2048

(5)MOVAX,BH(6)MOV[BP],[DI]

(7)XCHGCS,AX(8)POPCS

(1)立即数不能为目的操作数

(2)两个操作数的类型不一致

(3)两个操作数不能同时为存储器操作数

(4)K1不能用EQU重复定义

(5)两个操作数类型不匹配

(6)两个操作数不能同时为存储器操作数

(7)CS不能作为XCHG的操作数

(8)CS不能为目的操作数

2.6假设在数据段进行如下的定义:

DATASegment

XXDB-50,71,5,65,0

YYDB200DUP('

ABCD'

ZZDW100DUP(?

WWDW25H,1052H,370H,851H

DATAENDS

(1)用一条指令将YY的偏移地址送入BX

(2)用一条伪指令给出该数据段占用所有字节长度

(3)用一条伪指令给出变量ZZ分配的字节数目

(4)编写一段程序将WW数组中的数据全部送入YY缓冲区

(5)将数组XX中的第二个数据与第五个数据进行调换

(1)LEABX,YY

(2)在数据段的最后加上:

LENEQU$-XX

(3)ZZLENEQUWW-ZZ

(4)MOVAX,WW

MOVYY,AX

MOVAX,WW+2

MOVYY+2,AX

MOVAX,WW+4

MOVYY+4,AX

MOVAX,WW+6

MOVYY+6,AX

(5)MOVAL,XX+1

MOVXX+4,AL

2.7什么叫寻址方式?

8086/8088指令系统有哪些寻址方式?

指令中操作数的寻找方法称为寻址方式。

8086/8088系统所支持的七种基本寻址方式:

立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址和相对基址变址寻址。

2.8将首地址为BLOCK的字数组中的第100个数送入AX中,试写出相关指令序列,要求分别使用以下三种寻址方式:

(1)以BX寄存器的间接寻址

(2)以BX寄存器的相对寻址

(3)以BX、SI寄存器的基址变址寻址

(1)MOVBX,OFFSETBLOCK+99*2

MOVAX,[BX]

(2)MOVBX,99*2

MOVAX,BLOCK[BX]

或:

LEABX,BLOCK

MOVAX,[BX+99*2]

(3)LEABX,BLOCK

MOVSI,99*2

MOVAX,[BX+SI]

LEASI,BLOCK

MOVBX,99*2

2.9已知:

(BX)=1200H,(BP)=2400H,(SI)=0100H,(DI)=0200H,(SS)=1000H,(DS)=2000H,(ES)=3000H,变量VAR1对应地址为2000H,试分别指出下列指令中存储器的寻址方式及物理地址。

(1)MOVAL,[020H]

(2)MOVAL,[BP+010H]

(3)MOV[BX+SI-20H],AX

(4)MOVBL,ES:

[BX+10H]

(5)MOVVAR1[BX+DI],AL

(1)直接寻址PA=(DS)*16+EA=20000h+020H=20020H

(2)寄存器相对寻址PA=(SS)*16+EA=10000H+2400H+010H=12410H

(3)相对基址加变址寻址PA=(DS)*16+EA=20000H+1200H+0100H-20H=212E0H

(4)寄存器相对寻址PA=(ES)*16+EA=30000H+1200H+10H=31210H

(5)相对基址加变址寻址PA=(DS)*16+EA=20000H+2000H+1200H+0200H=23400H

2.10设Block为字单元1000H:

001FH的符号地址(变量),该单元的内容是01A1H,试问以下两条含有Block的指令有什么不同?

指令执行后BX的内容是多少?

(1)MOVBX,Block

(2)LEABX,Block

(1)BX的内容为01A1H

(2)BX的内容为001FH

2.11什么叫堆栈?

采用堆栈的意义?

2.12若在数据段中从字节变量TABLE相应的单元开始存放了0~15的平方值,试写出包含有XLAT指令的指令序列查找N(0~15)中的某个数的平方。

(设N的值存放在CL中)

LEABX,TABLE

MOVAL,N

XLAT

2.13编写程序对存放在DX,AX中的双字节长数据的求补

NOTDX;

首先将(DX,AX)取反

NOTAX

ADDAX,1;

最低位加1,注意:

不能用INC指令

ADCDX,0;

把进位(如果有)传递到高位

2.14写出实现下列计算的指令序列。

(假定X、Y、Z、W、R都为有符号数字变量)

(1)Z=(W*X)/(R+6)

(2)Z=((W-X)/(5*Y))*2

(3)Z=(X+Y)/R-W(4)Z=(X/Y+W)*100+R

(1)MOVAX,W

IMULX

MOVBX,R

ADDBX,6

IDIVBX

MOVZ,AX

MOVR,DX

(2)MOVAX,Y

MOVBX,5

IMULBX

MOVBX,AX

MOVAX,W

SUBAX,X

MOVCX,2

IMULCX

IDIVBX

MOVZ,AX

(3)MOVAX,X

ADDAX,Y

CWD

IDIVR

SUBAX,W

MOVZ,AX

(4)MOVAX,X

IDIVY

ADDAX,W

MOVBX,100

IMULBX

MOVBX,AX

MOVCX,DX

MOVAX,R

CWD

ADDAX,BX

ADCDX,CX

;

结果存放在DX、AX中

2.15设在AX、BX、CX、DX中均存放的是用压缩的BCD码表示的4位十进制数,试编写程序完成以下的计算:

(1)(AX)+(BX)→AX

(2)(DX)-(CX)→DX

(1)ADDAL,BL

DAA

XCHGAL,AH

ADCAL,BH

DAA

XCHGAL,AH

(2)MOVAL,DL

SUBAL,CL

DAS

MOVDL,AL

MOVAL,DH

SBBAL,CH

MOVDH,AL

2.16简述指令的“DAA”和“DAS”对BCD码运算后进行调整的规则。

DAA的调整规则:

if(AL低4位>

9或AF=1)then

AL=AL+06H;

AF=1;

endif

if(AL高4位>

9或CF=1)then

AL=AL+60H;

CF=1;

endif

DAS的调整规则:

AL=AL-06H;

AL=AL-60H;

Endif

2.17用程序段实现对存入在BX,AX的双字进行左移5位。

SHLAX,1

RCLBX,1

SHLAX,1

2.18试分析下列程序完成什么功能?

MOVCL,4

SHLDX,CL

MOVBL,AH

SHLAX,CL

SHRBL,CL

ORDL,BL

把32位二进制代码(DX,AX)联合左移4位。

2.19已知程序段如下:

MOVAX,1234H

MOVCL,4

ROLAX,CL

DECAX

MOVCX,4

MULCX

试问:

(1)每条指令执行后,AX寄存器的内容是什么?

(2)每条指令执行后,CF,SF及ZF的值分别是什么?

(3)程序运行结束时,AX及DX寄存器的值为多少?

MOVAX,1234H;

AX内容为1234H,CF、SF、ZF的值保留初值

MOVCL,4;

AX内容为1234H,CF、SF、ZF同上

ROLAX,CL;

AX内容为2341H,CF=1、SF=0、ZF=0

DECAX;

AX内容为2340H,CF=1、SF=0、ZF=0

MOVCX,4;

MULCX;

AX内容为8D00H,CF=0、SF=0、ZF=0

2.20程序中的“转移”是个什么概念?

CPU执行转移指令是如何实现转移的?

程序中的“转移”是指改变程序的顺序执行过程,某条指令执行完后,不是紧接着执行该指令后面的指令,而是执行其它的指令。

CPU是通过改变CS和IP指令指针的值来实现转移的。

2.21设(DS)=2000H,(BX)=0030H,(SI)=0202H,(20232H)=00H,(200233H)=06H,分别执行下述两条指令后,实际转移的目标地址物理地址多少?

(1)JMPBX

(2)JMPWordPTR[BX+SI]

(1)目的地址为0030H

(2)转移的目标地址为:

由[BX+SI]寻址得存储单元的地址为20232H,目的地址为0600H。

2.22编写指令序列,实现下述要求

(1)使AX寄存器的低4位清零,其余位不变。

(2)使BX寄存器的低4位置1,其余位不变。

(3)测试BX中的位0和位4,当这两位同时为零时,将AL置1,否则AL置0。

(1)ANDAX,0FFF0H

(2)ORAX,000FH

(3)TESTAX,0011H

JZNEXT;

ZF=1,表明这两位同时为0,转走将AL置1

MOVAL,0;

ZF=0,表明这两位不同时为0,将AL清0

JMPEXIT

NEXT:

MOVAL,1

EXIT:

2.23下面程序段在什么情况下执行结果是(AH)=0?

BEGIN:

INAL,60H

TESTAL,80H

JZBRCH1

XORAX,AX

JMPSTOP

BRCH1:

MOVAH,0FFH

STOP:

……

从60H端口读到是数据最高位为1时,使(AH)为0;

数据最高位为0时,使(AH)为0FFH。

2.24“CALL”指令与“JMP”指令相同之处是什么?

不同之处是什么?

相同之处:

“CALL”指令和“JMP”指令都能实现程序的控制转移,改变程序顺序指令的过程。

不同之处:

“CALL”指令执行时,使程序转移到子程序中执行,执行完子程序后,还是会回到调用程序,继续执行紧跟在“CALL”指令之后的那条指令。

但“JMP”指令执行完后一般不会去执行紧跟在“JMP”指令之后的那条指令。

2.25叙述8086/8088CPU执行指令“CALLDWORDPTR[100H]”的步骤。

2.26设下列程序执行前,栈顶指针SS:

SP为1000H:

0220H,试求:

POPCX

POPBX

POPAX

RET4

(1)画出该程序执行后的堆栈存储情况示意图。

使堆栈指针加10,上面的5个字的内容出栈,图略。

(2)给出当前栈顶SS和SP的值。

(SS)=1000H,(SP)=022AH

2.27一双字长的带符号数放在X和X+2中(X为变量),试编写一程序对这个数求其绝对值。

TEST[X+2],8000H;

测试最高位,判断正负,负数好取绝对值

JZDONE

MOVAX,X

MOVDX,[X+2]

NOTAX

NOTDX

ADDAX,1

ADCDX,0

MOV[X],AX

MOV[X+2],DX

DONE:

2.28试编写一个汇编语言程序,要求将键盘输入的小写字母用大写字母显示出来。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAH,01H

INT21H

CMPAL,0DH;

输入回车推出程序

JZEXIT

ORAL,20H

MOVAH,02H

JMPSTART

EXIT:

MOVAX,4C00H

CODEENDS

ENDSTART

2.29试编写程序实现例236的功能,但是不要使用字符串操作指令。

LEASI,STRING1-1

LEADI,STRING2-1

MOVCX,20

AGA:

INCSI

INCDI

MOVAL,[SI]

CMPAL,ES:

[DI]

LOOPZAGA

2.30试编写程序实现例237的功能,但是不要使用字符串操作指令。

LEADI,STRING2

MOVAL,‘A’

MOVCX,20

CMPAL,ES:

JZEXIT

LOOPAGA

2.31在使用“REPNZCMPSB”指令时,应事先做好哪些工作?

将源串的偏移地址送入SI,目的串的偏移地址送入DI,方向标志DF清0,比较的字节数送入CX。

2.32已知在以ARRAY为首地址的内存区域存放了100个字节数,试编写相关的程序段用以完成将该数据传送到BUFF为首地址的存储区域中。

分别用以下不同方法实现。

(1)用一般数据传送指令“MOV”实现。

(2)用字符传送指令“MOVSB”实现。

(3)用重复操作前缀传送指令“REPMOVSB”实现。

(4)用LODSB/STOSB实现。

(1)

LEASI,ARRAY

LEADI,BUFF

MOVCX,100

MOVAL,[SI]

MOV[DI],AL

INCSI

(2)

LEASI,ARRAY

MOVAX,DS

MOVES,AX

CLD

MOVSB

(3)LEASI,ARRAY

REPMOVSB

(4)

LODSB

STOSB

2.33判断STRING1和STRING2为首地址的内存区域存放了二个长度为20的字符串是否相等。

若相等将SIGN单元置1,反之,将SIGN单元置0。

(1)用比较条件转移指令实现。

(2)用重复操作前缀搜索指令实现。

LEASI,STRING1-1

CMPAL[DI]

JZEQ

MOVSIGN,0

JMPEXIT

EQ:

MOVSIGN,1

EXIT:

LEASI,STRING1

LEADI,STRING2

MOVAX,DS

REPECMPSB

JZEQ

2.34试用其他指令序列来代替完成以下指令的功能:

(1)LOOPNEXT

(2)LDSBX,[100H]

(3)XLAT

(4)LOOPZNEXT

(5)LAHF

(6)XCHGAX,[BX]

(7)NEGWordPTR[1000H]

(8)ADCAL,[SI+BX]

(9)TESTAL,00001111B

(10)MOVSW(DF=0)

(11)REPZCMPSB(DF=0)

(1)DECCX

JNZNEXT

(2)MOVBX,[100H]

MOVDS,[102H]

(3)MOVAH,0

ADDBX,AX

MOVAL,[BX]

(4)JNZEIXT

LOOPNEXT

EXIT:

(5)题目好像不对

(6)MOVCX,[BX]

MOV[BX],

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

当前位置:首页 > 小学教育 > 语文

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

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