当前位置:文档之家› 汇编语言习题答案

汇编语言习题答案

汇编语言习题答案
汇编语言习题答案

汇编语言程序设计习题解答

目录

第1章汇编语言基础知识 (1)

第2章微型计算机组织 (4)

第3章寻址方式与指令系统 (6)

第4章汇编语言程序格式 (13)

第5章分支程序设计 (17)

第6章循环程序设计 (25)

第7章子程序设计 (36)

第1章汇编语言基础知识

1.1 机器语言、汇编语言和高级语言各自有什么特点?汇编语言与机器语言和高级语言相比,有哪些优点?

答:计算机只能直接识别由0和1组成的二进制代码。机器指令就是用二进制编码的指令,每一条机器指令控制计算机完成一个基本操作。某一种处理器所支持的全部指令的集合就是该处理器的指令系统。指令集及使用它们编写程序的规则被称作机器语言。

机器语言程序是计算机唯一能够直接识别并执行的程序,因此,机器语言程序常被称为目标程序(或目的程序)。用机器语言编写的程序占用内存小,运行速度快,但机器语言不易读、出错率高、难维护,也不能直观地反映用计算机解决问题的基本思路。因此,只有在计算机发展的早期或者不得已得情况下,才使用机器语言来编写程序。

汇编语言是一种采用助记符表示的程序设计语言。助记符一股都是英语单词的缩写,因而方便人们书写、阅读和检查,例如用ADD表示加法。用汇编语言编写的程序称为汇编语言源程序,它不能由机器直接执行,而是需要被翻译成机器语言程序才可以由处理器执行,这个翻译的过程称为汇编,完成汇编工作的程序称为汇编程序。

汇编语言比机器语言直观一些,但仍然繁琐难记。20世纪50年代出现了高级程序设计语言。高级语言是相对于低级语言而言的,高级语言采用接近于人类自然语言的语法形式及数学表达形式,它与具体的计算机硬件无关,具有很好的通用性,更容易被掌握和使用。当然,用高级语言编写的源程序也不会被机器直接执行,也须经过编译或解释程序的翻译才能变为机器语言程序。

与机器语言相比,汇编语言易于理解和记忆,汇编语言程序也易于编写、阅读和调试。由于其语句与机器指令语句一一对应,因此,汇编语言可以非常方便有效地控制机器。当编写操作系统或其他系统软件时,汇编语言是不可或缺的工具。汇编语言程序的执行效率比高级语言高。这种高效体现在时间和空间两个方面。汇编程序的执行速度快,在实现同样功能的情况下,汇编语言程序生成的二进制可执行程序短。通过学习汇编语言编程,用户将对计算机体系结构及运行原理有更深刻的认识,这是从高级语言中无法学到的。再者,汇编语言编程与高级语言编程在很多地方是相通的,掌握汇编语言程序设计,有助于学习高级语言编程。

1.2 解释汇编语言源泉程序、汇编程序及目标程序的概念。

答:用汇编语言编写的程序称为汇编语言源程序,其扩展名用.asm;它不能由机器直接执行,而是需要被翻译成机器语言程序才可以由处理器执行,这个翻译的过程称为汇编,完成汇编工作的程序称为汇编程序。

ASM文件建立以后,需要用汇编程序(masm.exe或Tasm.exe)进行汇编,汇编后产生的就是目标程序(OBJ文件)。

1.3 将下列十进制数转换为二进制数和十六进制数。

A.127 B.125.25 C.32767 D.4096

答:A.127D=111 1111B=3FH

C.32767D=111 1111 1111 1111B=7FFFH

D.4096D=1 0000 0000 0000B=1000H

1.4 将下列二进制数转换为十六进制数和十进制数。

A.101 1101 B.1000 0000 C.1111 1111 D.1010 1010 1010 答:A.101 1101B=5DH=93D

B.1000 0000B=80H=128D

C.1111 1111B=0FFH=255D

D.1010 1010 1010B=0AAAH=2736D

1.5 将下列十六进制数转换为二进制数和十进制数:

A.5BH B.FBH C.3456H D.FFCCH

答:A.5BH=101 1011B=91D

B.FBH=1111 1011B=251D

C.3456H=11 0100 0101 0110B=13398D

D.FFCCH=1111 1111 1100 1100B=65484D

1.6 假设机器字长为8位,给出下列十六进制数的补码形式(用二进制表示)。

A.-34 B.A5 C.9B D.-FE

答:A.34H=0011 0100B -34H=1100 1100B

B.A5H=1010 0101B

C.9BH=1001 1011B

D.FEH=1111 1110B -FEH=0000 0010B

1.7 下列各数均为十六进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

A.(-56)+27 B.56+(-27)

C.56-(-27) D.-56-(-27)

答:[56]

补=0101 0110B [-56]

=1010 1010B

[27]

补=0010 0111B [-27]

=1101 1001B

A.[(-56)+27]

补=[-56]

+[27]

=1010 1010B + 0010 0111B=1101 0001B =0D1H CF=0 SF=1 ZF=0 OF=0

B.[56+(-27)]

补=[56]

+[-27]

=0101 0110B + 1101 1001B=0010 1111B =2FH CF=1 SF=0 ZF=0 OF=0

C.[56-(-27)]

补=[56]

-[-27]

=[56]

+[27]

=0101 0110B + 0010 0111B

=0111 1101B=7DH CF=0 SF=1 ZF=0 OF=1

D.[-56-(-27)]

补=[-56]

-[-27]

=[-56]

+[27]

=1010 1010B+0010 0111B=1101

0001B=0D1H CF=0 SF=1 ZF=0 OF=0

A.FE B.2C C.D8 D.57

答:A.FEH表示的带符号数为-2,D8H表示的无符号数为254;

B.2CH表示的带符号数为44,2CH表示的无符号数为44;

C.D8H表示的带符号数为-40,D8H表示的无符号数为216;

D.57H表示的带符号数为87,57H表示的无符号数为87。

1.9 在ASCII表中,字符‘0’~‘9’与数值0~9之间的编码规律是什么?大写字母与小写字母之间的编码规律是什么?

答:字符‘0’~‘9’与数值0~9之间的编码规律是:数值0~9加上30H即为对应字符

‘0’~‘9’的ASCII值;

大写字母‘A’~‘Z’之间的编码规律是:按字母表中字母的顺序依次为41H、42H、43H、…;

小写字母‘a’~‘z’之间的编码规律是:按字母表中字母的顺序依次为61H、62H、63H、…。

第2章微型计算机组织

2.1 在8086//8088系统中,存储器是分段组织的,每段最大字节的长度为 B 。

A. 8K

B. 64K

C. 1M

D. 不确定

2.2 指令指针寄存器IP用于存放代码段中的偏移地址,在程序执行过程中,它始终指向

C 。

A. 偏移地址值

B. 正在执行指令的首地址

C. 下一条指令的首地址

D. 需计算有效地址后才能确定的地址

2.3 已知一数据段的段地址为0100H,这个段的第6个字单元的物理地址是 B 。

A. 01010H

B. 0100AH

C. 01012H

D. 01006H

2.4 8086存储器为什么采用分段结构?是如何分段的?

答:8086/8088的字长为16位,16位字长的机器可以访问的最大存储单元空间为64KB,而8086/8088的地址总线宽度为20位,故其最大寻址空间为220=1MB。那么在16位字长的机器里如何如何提供20位地址?解决的办法是采用存储器地址分段的方法。

存储器分段时,1MB的地址空间可划分为若干个段,段内空间是线性增长的。每个段的最大长度不超过64KB,这样段内地址可以用16位表示。另外,段不能起始于任意地址,而必须从任一小段的首地址开始。机器规定:从0地址开始,每16个字节为一小段,下面列出了存储器最低地址区的三个小段的地址空间,每行为一小段。

2.5 有两个16位字1FD8H和3BC5H分别存放在存储器的000A0H和000A3H单元中,请用图表示出它们在存储器里的存放情况。

答:

000A0H

000A1H

000A2H

000A3H

000A4H

2.6 现有存储器中存放信息如图2.6所示。试读出30042H和30044H字节单元的内容,以及30040H和30041H字单元的内容。

30040H

30042H

30043H

30044H

图2.6 2.4题存储器信息存放示意图

答:字节单元(30042H)=76H 字节单元(30044H)=98H

字单元(30040H)=325AH 字单元(30041H)=7632H

2.7 段地址和偏移地址为1000H:127BH的存储单元的物理地址是什么?

答:1000H:127BH=1000H*10H+127BH=1127BH

2.8 假设用以下寄存器组合来访问存储单元,试分别求出它们所访问单元的物理地址。 A.(DS)=1000H和(DI)=2000H;

B.(ES)=2000H和(SI)=1002H;

C.(SS)=3000H和(BP)=3200H;

D.(DS)=4000H和(BX)=3A00H。

答:A.SA=(DS)*16d+(DI)=1000H*16d+2000H=12000H;

B.SA=(ES)*16d+(SI)=2000H*16d+1002H=21002H;

C.SA=(SS)*16d+(BP)=3000H*16d+3200H=33200H;

D.SA=(DS)*16d+(BX)=4000H*16d+3A00H=43A00H。

第3章寻址方式与指令系统

3.1 已知(BX)=524BH,(DI)=1A8DH,位移量D=1100H,试确定在以下各种寻址方式下的有效地址是什么?

(1)立即寻址(2)直接寻址

(3)使用BX的寄存器寻址(4)使用BX的寄存器间接寻址

(5)使用BX的寄存器相对寻址(6)基址变址寻址

(7)相对基址变址寻址

答:(1)无有效地址EA;

(2)有效地址EA=D=1100H;

(3)无有效地址EA;

(4)有效地址EA=(BX)=524BH;

(5)有效地址EA=(BX)+D=524BH+1100H=634BH;

(6)有效地址EA=(BX)+(DX)=524BH+1A8DH=6CD8H;

(7)有效地址EA=(BX)+(DX)+D=524BH+1A8DH+1100H=7DD8H。

3.2 已知(DS)=2100H,(ES)=2000H,(SS)=1200H,(BX)=1000H,(BP)=0100H,(DI)=0010H,符号地址VALUE的值为0030H,试指出下列指令中源操作数的寻址方式是什么?其物理地址值是多少?

(1)MOV AX,1234H (2)MOV AX,BX

(3)MOV AX,[1000H] (4)MOV AX,[BX]

(5)MOV AX,[BP] (6)MOV AX,ES:[DI]

(7)MOV AX,VALUE[BX] (8)MOV AX,[BP+0012H]

(9)MOV AX,[BX+DI] (10)MOV AX,VALUE[BP+DI]

答:(1)立即寻址方式,无物理地址SA;

(2)寄存器直接寻址方式,无物理地址SA;

(3)直接寻址方式,其物理地址SA=(DS)*16d+D

=2100H*16d+1000H=22000H;

(4)寄存器间接寻址方式,其物理地址SA=(DS)*16d+(BX)

=2100H*16d+1000H=22000H;

(5)寄存器间接寻址方式,其物理地址SA=(SS)*16d+(BP)

=1200H*16d+0100H=12100H;

(6)寄存器间接寻址方式,其物理地址SA=(ES)*16d+(DI)

=2000H*16d+0010H=20010H;

(7)相对寻址方式,其物理地址SA=(DS)*16d+(BX)+VALUE

=2100H*16d+1000H+0030H=22030H;

(8)相对寻址方式,其物理地址SA=(SS)*16d+(BP)+0012H

=1200H*16d+0100H+0012H=12112H;

(9)基址变址寻址方式,其物理地址SA=(DS)*16d+(BX)+(DI)

=2100H*16d+1000H+0010H=22010H;

(10)相对基址变址寻址方式,其物理地址SA=(SS)*16d+(BP)+(DI)+VALUE

3.3 已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=0ABCDH,(20102H)=1234H,(21200H)=0FFCDH,(21202H)=5678H,试说明下列各条指令执行完后AX寄存器的内容。

(1)MOV AX,BX (2)MOV AX,[1200H]

(3)MOV AX,[BX] (4)MOV AX,[BX+1100H]

(5)MOV AX,[BX+SI] (6)MOV AX,[BX+SI+1100H]

答:(1)(AX)=(BX)=0100H;

(2)(AX)=((DS)*16d+1200H)=(21200H)=0FFCDH;

(3)(AX)=((DS)*16d+(BX))=(20100H)=0ABCDH;

(4)(AX)=((DS)*16d+(BX)+1100H)=(21200H)=0FFCDH;

(5)(AX)=((DS)*16d+(BX)+(SI))=(20102H)=1234H;

(6)(AX)=((DS)*16d+(BX)+(SI)+1100H)=(21202H)=5678H。

3.4 指出下列各寻址方式所使用的段寄存器。

(1)[DI+12H] (2)[1234H]

(3)ES:[BX+SI] (4)[BP+SI+100H]

答:(1)使用段寄存器DS;

(2)使用段寄存器DS;

(3)使用段寄存器ES;

(4)使用段寄存器SS。

3.5 指出下列操作数寻址方式的错误原因。

(1)[AX] (2)[SI+DI]

(3)[BX+BP] (4)[CX+1000H]

(5)[DX] (6)SI[1000H]

答:(1)AX不能用作存储型寻址方式中的寄存器;

(2)SI、DI不能同时出现在同一个存储型寻址方式中;

(3)BX、BP不能同时出现在同一个存储型寻址方式中;

(4)CX不能用作存储型寻址方式中的寄存器;

(5)DX不能用作存储型寻址方式中的寄存器;

(6)在存储型寻址方式中的寄存器必须加中括号。

3.6 假设(SS)=2000H,(SP)=0100H,(AX)=1234H,(BX)=5678H,执行下列指令序列后CX和DX中内容是什么?画出堆栈变化示意图。

PUSH AX

PUSH BX

POP CX

POP DX

答:

执行执行

200FCH 200FCH

200FDH 200FDH

200FEH 200FEH

200FFH 200FFH

20100H 20100H

(SP(SP

执行执行

200FCH 200FCH

200FDH 200FDH

200FEH 200FEH

200FFH 200FFH

20100H 20100H

(SP(SP

(CX)=5678H,(DX)=1234H。

3.7 假设VAR为数据段中偏移地址为0635H单元的符号名,其中存放的内容为34ABH,试问以下两条指令有什么区别?

MOV AX,VAR

LEA AX,VAR

答:MOV AX,VAR指令是把VAR指明单元的内容送入AX中,因此执行该指令后(AX)=34ABH;

LEA AX,VAR指令是把VAR指明偏移地址送入AX中,因此执行该指令后(AX)=0635H。

3.8 已知(AX)=1020H,(DX)=3080H,端口地址PORT1=40H,PORT2=41H,(40H)=6EH,(41H)=22H,指出下列各条指令执行的结果。

(1)IN AL,PORT2 (2)IN AX,40H

(3)OUT DX,AL (4)OUT DX,AX

答:(1)把PORT2指明的41H端口中值送入AL寄存器中,(AL)=22H;

(2)把PORT2、PROT1指明的41H、40H端口中值送入AX寄存器中,(AL)=226EH;

(3)将AL寄存器中的值20H送入3080H端口中;

(4)将AX寄存器中的值1020H送入3081H、3080H端口中。

3.9 试根据以下要求写出相应的汇编语言指令。

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

ADD AX,BX

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

ADD BL,[BP+SI]

(3)用寄存器BX和位移量100H的寄存器相对寻址方式把存储器中一个字和AX寄

ADD [BX+100H],AX

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

ADD [20H],99H

(5)把数据0ABCDH与CX寄存器的内容相加,并把结果送入CX中。

ADD CX,0ABCDH

3.10 求出以下各十六进制数与十六进制数74B0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。

(1)2465H (2)0BFC0H (3)4651H (4)9E70H

答:(1)2465H+74B0H=9915H,SF=1,ZF=0,CF=0,OF=1;

(2)0BFC0H+74B0H=3470H,SF=0,ZF=0,CF=1,OF=0;

(3)4651H+74B0H=BB01H,SF=1,ZF=0,CF=0,OF=1;

(4)9E70H+74B0H=1320H,SF=0,ZF=0,CF=1,OF=0。

3.11 求出以下各十六进制数与十六进制数5BC0H之差,并根据结果设置标志位SF、ZF、CF和OF的值。

(1)2465H (2)0BFC0H (3)4651H (4)9E70H

答:(1)2465H-5BC0H=0C8A5H,SF=1,ZF=0,CF=1,OF=1;

(2)0BFC0H-5BC0H=6400H,SF=0,ZF=0,CF=0,OF=1;

(3)4651H-5BC0H=0EA91H,SF=1,ZF=0,CF=1,OF=0;

(4)9E70H-5BC0H=42B0HH,SF=0,ZF=0,CF=0,OF=1。

3.12 写出执行以下计算的指令序列,其中X、Y、Z、R和W均为存放16位带符号数单元的地址。

(1)W←X+(Y-Z)(2)W←X-(Y+3)-(R+8)

(3)W←(X*Y)/(Z-5),R←余数(4)W←(R-(X*Y-Z+450))/Y 答:(1) W←X+(Y-Z)以下程序都未考虑带符号数的溢出

MOV AX, Y

SUB AX, Z

ADD AX, X

MOV W, AX

(2) W←X-(Y+3)-(R+8)

MOV BX, Y

ADD BX, 3

MOV CX, R

ADD CX 8

MOV AX, W

SUB AX, BX

SUB AX, CX

MOV W AX

(3) W←(X*Y)/(Z-5),R←余数

SUB BX, 5

MOV AX, X

IMUL WORD PTR [Y]

IDIV BX

MOV W, AX

MOV R, DX

(4) W (R-(X*Y-Z+450))/Y

MOV AX, X

IMUL Y

SUB AX, Z

SBB DX, 0

ADD AX, 450

ADC DX,0

MOV BX, AX

MOV CX, DX

MOV AX, R

CWD

SUB AX, BX

SBB DX, CX

IDIV WORD PTR [Y]

MOV W, AX

3.13 假设(BH)=0E3H,符号地址VALUE的值为79H,试确定下列各指令单独执行后的结果。

(1)XOR BH,VALUE (2)AND BH,VALUE

(3)OR BH,VALUE (4)XOR BH,0FFH

(5)AND BH,01H (6)TEST BH,05H

答:(1)(BH)=0E3H ∨ 79H=9AH;

(2)(BH)=0E3H ∧ 79H=61H;

(3)(BH)=0E3H ∨ 79H=0FBH;

(4)(BH)=0E3H ∨ 0FFH=1CH;

(5)(BH)=0E3H ∧ 01H=01H;

(6)(BH)=0E3H。

3.14 按下列要求设计指令序列。

(1)把AX中的最右4位置1。

OR AX,000FH

(2)把AX中的最左3位清零。

AND AX, 1FFFH

(3)把AX中的7、8、9位取反。

XOR AX,0000 0011 1000 0000B

(4)清除DH中的最低三位而不改变其它位,结果存入BH中。

AND DH, FFF8H

(5)把DI中的最高5位置1而不改变其它位。

OR DI, F800H

(6)把AX中的0~3位置1,7~9位取反,13~15位置0。

OR AX, 0000 0000 0000 1111B

XOR AX,0000 0011 1000 0000B

AND AX,0001 1111 1111 1111B

(7)检查BX中的第2、5和9位是否有一位为1。

TEST BX, 0000 0010 0010 0100B

(8)检查DX中的第1、4、11和14位是否同时为0。

TEST DX,0100 1000 0001 0010B

3.15 假设(DX)=1234H,(CL)=2,(CF)=1,试确定下列各条指令单独执行后DX寄存器的内容以及CF标志位的值。

(1)SHL DX,CL (2)SHR DX,1

(3)SAL DX,CL (4)SAR DX,CL

(5)ROL DX,CL (6)ROR DX,CL

(7)RCL DX,1 (8)RCR DX,CL

答:(1)(DX)= 48D0H, CF=0;

(2)(DX)= 091AH, CF=0;

(3)(DX)= 048DH, CF=0;

(4)(DX)= 48D0H, CF=0;

(5)(DX)= 48D0H, CF=0;

(6)(DX)= 048DH, CF=0;

(7)(DX)= 2469H, CF=0;

(8)(DX)= 448DH, CF=0。

3.16 写出对存放在A和A+2单元中的双字长数求补的指令序列,要求结果存放在B和B +2单元中。

答:MOV AX, 0

MOV DX, 0

SUB AX, A

SBB DX, A+2

MOV B, AX

MOV B+2, DX

3.17 有一程序段如下:

MOV CX,20

LEA DI,VAR1

MOV DI,OFFSET VAR2

CLD

REP MOVSB

(1)这个程序段完成什么功能?(2)REP和MOVSB哪条指令先执行?

(3)MOVSB第一次执行时,完成什么操作?

(4)REP第一次执行时,完成什么操作?

始的单元中;

(2)先执行REP;

(3)MOVSB第一次执行时,完成:把VAR2字节单元中的内容送入VAR1单元中;

(4)判断CX的值是否等于0,若等于0则退出,否则执行(CX)=(CX)-1。

3.18 判断下列指令的正确性,如果某指令是错误的,说明其错误的原因。

(1)MOV BH,DX (2)MOV DS,ES

(3)MOV [BX],[SI] (4)MOV AL,[BX][DI]

(5)MOV CS,AX (6)XCHG BX,3

(7)MOV [SP],BX (8)MOV AX,BX+3

(9)XCHG ES,AX (10)SHL AX,CX

答:(1)错误,字寄存器的值不能传送给字节寄存器;

(2)错误,一个段寄存器的值不能直接传送给另一个段寄存器;

(3)一条指令不能同时出现两个存储器型寻址方式;

(4)正确;

(5)错误,代码段寄存器CS不能作为目的操作数;

(6)错误,立即寻址方式不能出现在交换指令中;

(7)错误,SP不能用在存储器型寻址方式中;

(8)错误,存储器型寻址方式中寄存器必须加中括号;

(7)错误,交换指令中不能使用段寄存器;

(8)错误,移位指令中移位次数只能使用1或者CL。

第4章汇编语言程序格式

4.1 什么是伪指令?伪指令与机器指令有什么区别?

答:伪指令又称伪操作,它与指令语句不同,指令是在程序运行期间由CPU来执行的,而伪指令本身并不产生对应的机器目标代码,它仅仅是告诉汇编程序一些信息(如段的定义、数据如何存放、程序的开始和结束等)。

4.2 画图说明下列数据定义语句所分配的存储空间及初始化的数据值。

(1)BUF_1 DB ‘HELLO’,16,10,64H,2 DUP(5,2 DUP(1,0),?)(2)BUF_2 DW 12H,3 DUP(0,?,1),5678H,‘CD’

答:

((

BUF_1 BUF_2

BUF_1+1 BUF_2+1

BUF_1+2 BUF_2+2

BUF_1+3 BUF_2+3

BUF_1+4 BUF_2+4

BUF_1+5 BUF_2+5

BUF_1+6 BUF_2+6

BUF_1+7 BUF_2+7

BUF_1+8 BUF_2+8

BUF_1+9 BUF_2+9

4.3 在ARRAY数组中依次存储了六个字数据,紧接着是名为ZERO的字单元,表示如下:

ARRAY DW 12,24,35,6,120,0

ZERO DW ?

(1)如果SI包含数组ARRAY的起始地址,编写指令序列将数据0送入ZERO单元。

MOV [SI+6*2],0

(2)如果SI包含数据0在数组中的位移量,编写指令序列将数据0送入ZERO单元。

MOV [SI+1*2],0

4.4 执行下列指令后,寄存器AX中内容是什么?

ARRAY DW 10,20,30,40,50

COUNT DW 3

……

LEA SI,TABLE

ADD SI,COUNT

MOV AX,[SI]

答:存储器单元分配如下表所示:

地址

ARRAY

ARRAY+1

ARRAY+2

ARRAY+3

ARRAY+4

ARRAY+5

ARRAY+6

ARRAY+7

ARRAY+8

ARRAY+9

COUNT

COUNT+1

(AX)=1E00H

4.5 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容各是什么?

VAR1 DB ?

VAR2 DW 20 DUP(?)

VAR3 DB ‘0123’

(1)MOV AX,TYPE VAR1 (2)MOV BX,TYPE VAR2

(3)MOV DX,SIZE VAR2 (4)MOV SI,LENGTH VAR3

答:(AX)=1;(BX)=2;(DX)=2*20=40D=28H;(SI)=1。

4.6 下述程序段运行后,AX、BX和CX寄存器中内容各是什么?

DATA SEGMENT

ORG 1234H

BUF1 DB 12H,34H

BUF2 DW 1234H

DATA ENDS

……

MOV BX,OFFSET BUF1

MOV AX,[BX]

MOV CH,BYTE PTR BUF2

MOV CL,TYPE BUF2

答:(AX)=3412H;(BX)=1234H;(CX)=3402。

4.7 假设程序中的数据定义如下:

NO DW ?

NAME DB 20 DUP(?)

COUNT DD ?

LENGTH EQU $-NO

问LENGTH的值是多少?该值表示什么意义?

答:LENGTH的值是26,该值表示变量LENGTH和NO之间数据所占用的内存单元数。

4.8 假设数据定义如下:

ORG 20H

BUF DW 1,2,$+3,4

……

MOV AX,BUF+3

则上述MOV指令执行后,AX寄存器中内容是什么?

答:存储器单元分配如下表所示:

地址

20H

21H

22H

23H

24H

25H

26H

27H

(AX)=2700H。

4.9 指出下列指令的错误。(假设OP1、OP2是已经用DW定义的变量)

(1)MOV BYTE PTR[BX],1000 (2)SUB BX,OFFSET [SI+1000H] (3)ADD AL,OP1 (4)ADD OP1,OP2

答:(1)数值1000不能送入字节单元;

(2)OFFSET的功能是:回送变量或标号的偏移地址值;

(3)字节数据和字数据直接运算;

(4)两个操作数都是存储器型寻址方式。

4.10 给定赋值语句如下:

ABC1 EQU 100

ABC2 EQU 25

ABC2 EQU 2

下列表达式的值是多少?

(1)ABC1*100+ABC2 (2)ABC1 MOD ABC3+ABC2 (3)(ABC1+2)*ABC2-2 (4)(ABC2/3)MOD 5

(5)(ABC1+3)*(ABC2 MOD ABC3)(6)ABC1 GE ABC3

(7)ABC2 AND 7 (8)ABC3 OR 3

答:(1)10025D=2729H;

(2)25D=19H;

(3)2548D=9F4H;

(4)3;

(5)103D=67H;

(6)-1;

(7)1;

(8)3。

4.11 在汇编语言源程序中,表达式的计算是由 B 完成的。

A. 编程者

B. 汇编程序

C. 程序执行时

D. 连接程序

4.12 表示一条指令的存储单元的符号地址称为 C 。

A. 标号

B. 变量

C. 偏移量

D. 类型

4.13 使用LINK连接命令,执行后可生成文件的扩展名为 C 。

A. COM

B. OBJ

C. EXE

D. LST

第5章分支程序设计

5.1 指令JMP FAR PTR NEXT属于 C 。

A. 段内直接寻址

B. 段内间接寻址

C. 段间直接寻址

D. 段间间接寻址

5.2 指令JMP BX转移的目标地址是偏移量为 B 。

A. IP+BX的内容

B. BX的内容

C. IP+BX所指向的内存字单元的内容

D. BX所指向的内存字单元的内容

5.3 当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是 C 。

A. JLE

B. JNL

C. JNLE

D. JL

5.4 条件转移指令JB产生程序转移的条件是 A 。

A. CF=1

B. CF=0

C. CF=1且ZF=1

D. CF=1且ZF=0

5.5 编写分支程序,在进行条件判断前,可用指令构成条件,下列指令中不能形成条件的是 D 。

A. CMP

B. SUB

C. AND

D. MOV

5.6 在代码段中偏移地址为061EH单元内有一条二字节指令JMP SHORT OBJ,如果其中位移量为以下三种值,试问转向地址OBJ的值是多少?

(1)25H

(2)4AH

(3)0B7H

答:(1)061EH+2+25H=0645H;

(2)061EH+2+4AH=066AH;

(3)061EH+2+0B7H(实际为负数-49H)=05D7H。

5.7 分析下列程序段并回答问题。

CMP AX,BX

JGE NEXT

XCHG AX,BX

NEXT:CMP AX,CX

JGE DONE

……

DONE:

(2)这3个数是带符号数还是无符号数?

答:(1)AX;

(2)带符号数。

5.8 试分析下列程序段:

ADD AX,BX

JNO L1

JNC L2

SUB AX,BX

JNC L3

JNO L4

JMP SHORT L5

如果AX和BX的内容给定如下:

(1)147BH和80DCH

(2)0B568H和54B7H

(3)42C8H和608DH

(4)0D023H和9FD0H

试问该程序执行完后,程序转向哪里?

答:(1)(AX)=147BH+80DCH=9557H,OF=0,CF=0,转L1;

(2)(AX)=0B568H+54B7H=0A1FH,OF=0,CF=1,转L1;

(3)(AX)=42C8H+608DH=0A355H,OF=1,CF=0,转L2;

(4)(AX)=0D023H+9FD0H=6FF3H,OF=1,CF=1,

(AX)=6FF3H-9FD0H=0D023H,OF=1,CF=1,转L5。

5.9 已知(DS)=3000H,(CS)=1000H,(SI)=2000H,(BX)=1000H,(DI)=4000H,(2000H)=0F34H,(2002H)=8605H,(3000H)=4598H,(3002H)=1000H,(5000H)=8A4CH,(5002H)=7900H,试问下列每条指令执行完后CS和IP寄存器的内容。

(1)JMP SI

(2)JMP [SI]

(3)JMP [BX][SI]

(4)JMP DWORD PTR [BX][SI]

答:(1)(CS)=1000H,(IP)=2000H;

(2)(CS)=1000H,(IP)=0F34H;

(3)(CS)=1000H,(IP)=(1000H+2000H)=4598H;

(4)(CS)=(1000H+2000H+2)=1000H,(IP)=(1000H+2000H)=4598H。

5.10 试编写一程序,对键盘输入的小写字母用大写字母显示出来。

答:程序段如下:

BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用

INT 21H

汇编语言基础练习题目

、填空 1. 在8086/8088的计算机中,存储单元的20位物理地址由两部分组成,即16 位的 段地址 和16位的 偏移地址,物理地址=段地址X 10H+偏移量。 2. 段的起始地址必须是某小段的首地址,它能被 10H 整除。 3. 已知01020H 字单元的内容为6A58H 请分别写出它的两个字节单元的地址和 内容: (01020H =58H, ( 01021H =6AH 4. 指令执行后,若标志寄存器的ZF=0,则表示结果不为0;若SF=0,则表示结 果的符号是正号,即结果为正数。 5. 控制器从存储器取出一条指令后,指令指针寄存器IP 的内容是 将要执行的下 一条指令开始的偏移地址。 6. 段地址和偏移地址为1000: 127B 的存储单元的物理地址是1127BH 解:由物理地址=段地址X 10H+偏移量的公式可得 物理地址=1000HX 10H+127BH=10000H+127BH=1127BH 、选择 1. 与CS 寄存器组合才能形成代码段的物理地址的寄存器是 解:16K 个字单元,即为32K 个字节单元。由于2的15次方为32K,因此至 少需要15位二进制数才能表示16K 个字单元。 3. 已知一数据段的段地址是0100H,这个段的第6个字单元的物理地址是(B ) o 解:由于一个字单元占用两个字节,第一个字单元的偏移地址为 0000H,因 此第一个字单元的物理地址为 01000H 。以后每一个字单元的地址在前一个的基 C )。 A. SP 寄存器 B. BP 寄存器 C. IP 寄存器 D. BX 寄存器 2.如果存储器分段时, 的二进制数至少是( 一个段最多允许16K 个字单元,那么表示该段内偏移地址 A )o A.15 位 位 B.16 位 C.17 位 D.18 A. 01010H B. 0100AH C.01012H D.01006H

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 ) 2.标号可以有两种类型属性.它们是( )和( ) 3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( ) 4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ). 5.循环程序通常由( )( )( )和循环结果外理四部分构成 6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT 7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( ) 8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( ) 9.分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量AYW( ) (2)双字变量AYD存放的地址指针送ES和SI( ) (3)变量AY2类型属性送AH( ) (4)不允许中断即关中断( ) (5)将字符串'HOW ARE YOU!'存入变量AYB( ) (6)子程序返回调用程序( ) (7)地址表达式AYY[4]的偏移地址送字变量ADDR( ) (8)AX的内容加1,要求不影响CF( ) (9)BX的内容加1,要求影响所有标志位( ) (10)若操作结果为零转向短号GOON( ) 二,单选题 1.IBM PC微机中,有符号数是用( )表示的 1.原码 2.补码 3.反码 4.BCD码 2.把汇编源程序变成代码程序的过程是( ) 1.编译 2.汇编 3.编辑 4.链接

汇编语言课后习题答案

2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后AX寄存器的内容。 (1)mov ax,1200h (2)mov ax,bx (3)mov ax,[1200h] (4)mov ax,[bx] (5)mov ax,[bx+1100h] (6)mov ax,[bx+si] (7)mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H (3)AX=4C2AH;偏移地址=bx=0100h (4)AX=3412H;偏移地址=bx=0100h (5)AX=4C2AH;偏移地址=bx+1100h=1200h (6)AX=7856H;偏移地址=bx+si=0100h+0002h=0102h (7)AX=65B7H;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出下列指令的错误 (1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5)mov al,300 (6)mov[sp],ax (7)mov ax,bx+di

(8)mov20h,ah 〔解答〕 (1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[SI] (7)源操作数应为[BX+DI] (8)立即数不能作目的操作数 〔习题2.5〕已知SS=2200H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop[bx] 〔解答〕 mov ax,8057h push ax mov ax,0f79h push ax pop bx;bx=0f79h pop[bx];DS:[0f79h]=8057h

汇编语言课后习题解答

第1章基础知识 检测点1.1(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 (4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU 最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

汇编语言题库

汇编语言题库 一、单项选择题 1、在下列的选项中,能够组成计算机系统的是()。 A.硬件系统和软件系统 B.CPU、存储器、输入/输出设备 C.操作系统、各种语言 D.系统软件和应用软件2、汇编语言属于()。 A.用户软件 B.系统软件 C.高级语言 D.机器语言3、汇编语言源程序经汇编程序汇编后产生的文件的扩展名是()。 A.EXE B.OBJ C.ASM D.LST 4、汇编语言的什么文件经链接(LINK)后产生可执行文件? A.ASM B.EXE C.LST D.OBJ 5、中央处理器CPU是由()组成的。 A.运算器 B.控制器 C.寄存器组 D.前三者6、IBM PC机的DOS是属于()。 A.用户软件B.系统软件C.系统硬件 D.一种语言7、汇编语言源程序是()程序。 A.不可直接执行的B.可直接执行的 C.经汇编程序汇编后就可执行的D.经连接后就可直接执行的8、8086/8088 CPU的寄存器组中,8位的寄存器共有()个。 A.4B.6C.8D.109、8086/8088 CPU的寄存器组中,16位的寄存器共有()个。 A.10B.12C.13D.1410、8086/8088 CPU执行算术运算时PSW共有()个标志位会受影响。 A.4B.5C.6D.711、在程序执行过程中,IP寄存器始终保存的是()。 A.上一条指令的首地址B.本条指令的首地址。 C.下一条指令的首地址D.需计算有效地址后才能确定地址。 12、IBM PC机的存储器可分()个段。 A.4B.256C.512D.65536 13、当使用BP作编程地址时,此时使用的是()段。 A.CSB.DSC.ESD.SS

汇编语言复习题(附答案)

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课 后四、六章的答案,大家抓紧时间复习哦! 一、选择题 1. 把要执行的程序与库文件连接起来形成可执行文件的系统程序是(B )。 A. 汇编程序 B. 连接程序 C. 机器语言程序 D.源代码程序 2. 在8088/8086的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是 (C )。 A..SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 3. 为了使主机访问外设方便起见,外设中的每个寄存器给予一个(C )。 A.物理地址 B. 逻辑地址 C. 端口地址 D. 段地址 4. MOV AX, 3064H,该指令中源操作数采用的寻址方式是(A )。 A.立即 B. 直接 C. 寄存器相对 D. 寄存器间接 5. 换码指令的助记符是(C )。 A. XCHG B. LEAS C.XLAT D. MOV 6. 如果A> B (A、B有符号数)发生转移,应选择的条件转移指令是(JGE )。 7. 下列符号中,可用作标识符的是(C )。 A.MOV B.AX C.MSG1 D.1ABC 8. X DB 10H DUP (1 , 2)内存变量定义语句拥有了( A )个字节的存储空间。 A.20D B.10D C.20H D.10H 9. 当DF=0时,执行串操作指令MOVSB变址寄存器SI、DI的值将(C )。 A.不变 B. 减1 C. 加1 D. 无法确定 10. 如下指令可将AX寄存器内容改变的是(A )。 A. AND AX , BX B . TEST AX , BX C. CMP AX , BX D . XCHG AX , AX 11.16位CPU支持的I/O 地址范围是(D )。 A. 0~0FFFFFH B. 0~0FFFFH C. 0~0FFFH D. 0~0FFH 12. MUL CL指令实现的功能是(A )。 A.无符号乘法:AX AL X CL B.有符号乘法:AX AL X CL C.无符号乘法:DX AL X CL D .有符号乘法:DX AL X CL 13. DOS系统功能调用(INT 21H )中,显示字符串的功能号是(D )。 A.01H B.02H C.08H D. 09H 14. 在16位CPU读取指令时,需要用到的寄存器对是(C )。 A.SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 15. 下列指令中,源操作数(既第2操作数)属于基址加变址寻址方式是(B )。 A.MOV AX,23H B. MOV AX,[BX+SI] C.SUB AX,[BX] D. ADD AX,BX 16. 有内存变量定义语句:VAR DW 10 DUP(1 , 2), 1234H, VAR的属性TYPE LENGTH和

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

汇编题库重点复习题

1.已知X=76,则[X]补=_______。 A.76H B. 4CH C. 0B4H D. 0CCH 2.已知[X]补=80H,则X =_______。 A.80H B.0 C. 0FFH D. -80H 3.已知[X]补=80H,则[X]补/2=_______。 A.0CCH B.4CH C. 49H D. 31H 4.已知X=78,Y=-83,则[X+Y]补=_______。 A.0F5H B.0A1H C. 0FBH D. 65H 5.将124转换成十六进制的结果是_______。 A.7CH B.7DH C. 7EH D. 7BH 6.将93H看成一个压缩的BCD码,其结果是_______。 A.10010101 B.10010011 C. 10000011 D. 10000001 7.45转换成二进制数是_______。 A.10101101 B.00111101 C. 00101101 D. 10011101 8.6CH 转换成十进制数是_______。 A.118 B.108 C. 48 D. 68 9.将93H扩展为字的结果是_______。 A.FF93H B.0093H C. 1193H D. 1093H 10.56的压缩BCD码是_______。 A.38H B. 56H C. 0506H D. 3536H 11.ASCII中的47H表示字符的是_______。 A.“7” B. “G” C. “g” D. “E” 12.十进行数-1的8位二进制数补码是_______。 A.11111110 B. 11110000 C. 11111111 D. 10001111 13.下列为补码表示,其中真值最大的数是_______。 A.10001000 B. 11111111 C. 00000000 D. 00000001 14.十六进制数88H,可表示成下面几种形式,请找出错误的表示_______。 A.无符号十进制数136 B. 1带符号十进制数-120D C. 压缩BCD码十进制数88 D. 8位二进制数-8的补码 15.计算机对字符、符号采用统一的二进制编码。其编码采用的是_______。 A.BCD码 B. 二进制码 C. ASCII D. 十六进制码第二章 16.在微机中分析并控制指令执行的部件是_______。 A.寄存器 B. 数据寄存器 C. CPU D. EU 17.在计算机的CPU中执行算术逻辑运算的部件是_______。 A.ALU B. PC C. AL D. AR 18.执行指令PUSH CX后堆栈指针SP自动_______。 A.+2 B. +1 C. —2 D. —1 19.在标志寄存器中表示溢出的是_______。 A.AF B. CF C. OF D. SF 20.对汇编语言源程序进行翻译的是程序是_______。 A.连接程序 B. 汇编程序 C. 编译程序 D. 目标程序

完整版汇编语言试题及答案..doc

一,单项选择题 (每小题 1 分,共 20 分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令 JMP FAR PTR DONE 属于 ( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是 ( A.对两个无符号数进行比较采用CMP 指令 ,对两个有符号数比较用CMP S 指令 B.对两个无符号数进行比较采用CMPS 指令 ,对两个有符号数比较用CM P 指令 C.对无符号数条件转移采用JAE/JNB 指令 ,对有符号数条件转移用JGE/J NL 指令 D.对无符号数条件转移采用JGE/JNL 指令 ,对有符号数条件转移用JAE/J NB 指令 3.一个有 128 个字的数据区 ,它的起始地址为 12ABH:00ABH, 请给出这个数据区最末一个字单元的物理地址是 ( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中 ,不正确的是 ( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是 ( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令 JNE 的测试条件为 ( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为 ( A.BX 或 CX

汇编语言课后习题答案___郑晓薇(整理后的)

习题一 1 无符号数: 11010011=211=D3H,01110111=119=77H, 10000011=131=83H, 00101111=47=2FH, 10101010=170=AAH 带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H, 00101111=+47=2FH,10101010= -86=AAH 2 5E8AH,0BE6H,3DEH,4940H 3 00011101+00110101=01010010=5 2H=82 01001001+11101000=00110001=3 1H=49 10111110+01010010=00010000=1 0H=16 10011010+11110001=10001011=8 BH= -117 4 00101001+01010011=01111100+0 0000110=10000010=82H=82 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+0 0000110=10000100=84H=84 0000000100110010+01110101=00 00000110100111+00000110 =0000001000000111=0207H=207 5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H 6 无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码 (2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255 (3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码 (4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码 8 (1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H (3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H (4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD 码0000001001010100,ASCII码323534H 9 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0 (2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0 (3) -74+29=11010011B,CF=0, SF=1,ZF=0,OF=0 (4) -92-37=01111111B,CF=1, SF=0,ZF=0,OF=1 10 回车、换行、响铃、ESC键、空格键、@、P、p 习题二 9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节) 10 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。 13 首单元的物理地址=38AE8H,末单元的物理地址 =38AE8H+7FFFH=40AE7H

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言试题及答案.

一,单项选择题(每小题1分,共20分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令JMP FAR PTR DONE属于( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是( A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP S指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM P指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J NL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J NB指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中,不正确的是( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( A.BX或CX

B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:( MOV AX,0 MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX=( A.99

汇编语言课后习题答案郑晓薇后的

汇编语言课后习题答案郑 晓薇后的 Modified by JEEP on December 26th, 2020.

习题一1 2 5E8AH,0BE6H,3DEH,4940H 3 00011101+00110101=0101001 0=52H=82 4 5000020A3H,FF94H,00003456H,007FH, FFFFEC00H 6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~ +32767,8000H~7FFFH 7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII 码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码8 (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H 9 (1) 56+63=01110111B, CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0, SF=0,ZF=0,OF=0(4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=1 10 回车、换行、响铃、ESC键、空格键、@、P、p 习题二 9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节) 10CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。

汇编语言期末复习题库

一、填空题 1.中央处理器包括运算器、控制器、寄存器组。 2.物理地址是指实际的20 位主存单元地址,每个存储单元对应唯一 的物理地址。 3.用二进制代码书写指令和程序的语言,称为机器语言。 4.计算机中的指令由操作码和操作数两部分组成。 5.把A和B两个寄存器的内容进行异或运算,若运算结果是0 ,那么 A、B寄存器的内容必定相同。 6.AL,BL中存放着压缩的BCD数,(AL)=18H,(BL)=47H,执行如下 两条指令ADD AL,BL 和DAA后,(AL)=65H 。 7.当指令“SUB AX,BX”执行后,CF=1,说明最高有效位有借位; 对有符号数,说明操作结果溢出。 8.FLAG状态标志寄存器中,AF为辅助进位标志,CF为进位标志, SF为符号标志,ZF为零标志,OF为溢出标志,PF为奇 偶性标志。 9.指出下列指令源操作数的寻址方式: MOV AX,ARRAY[SI] 变址寻址 MOV AX,ES:[BX] 寄存器间接寻址 MOV AX,[200H] 直接寻址 MOV AX,[BX+DI] 基址变址寻址 MOV AX,BX 寄存器寻址 MOV AX,1200H 立即数寻址

MOV AX,20[BX+SI]基址变址寻址 MOV AX,[DI+20] 变址寻址 10.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H, (20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21023H)=65H,下列指令执行后填入AX寄存器的内容: (1)MOV AX,1200H;(AX)= 1200H (2)MOV AX,BX;(AX)=0100H (3)MOV AX,[1200H];(AX)= 4C2AH (4)MOV AX,[BX];(AX)= 3412H (5)MOV AX,1100[BX];(AX)= 4C2AH (6)MOV AX,[BX][SI];(AX)= 7856H (7)MOV AX,1100[BX][SI];(AX)= 65B7H 11.已知‘A’的ASCII是41H,那么‘E’的ASCII是45H 。 12.Ends 是段定义结束伪指令,与Segment配套使用。 13.逻辑地址由段基值和偏移量组成。将逻辑地址转换为物理地址的公 式是段基值*16+偏移量。其中的段基值是由段寄存器存储。 14.一个有16个字的数据区,它的起始地址为70A0:0100H,那么该数据 区的最后一个字单元的物理地址为70B1E H。 15.DEBUG命令中,显示内存命令 D ,显示寄存器命令R,汇编命令 A ,执行命令G 。

汇编语言试题及答案

一,单项选择题(每小题1分,共20分) 1.指令JMP FAR PTR DONE属于() A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是() A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS 指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP 指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JN L指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JN B指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是() A.12C5BH B.12B6BH C.12C5AH D.12BFEH 4.在下列指令的表示中,不正确的是() A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是() A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为() A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为()A.BX或CX B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在()中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:()

汇编语言程序设计习题答案

第一章. 习题 1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其 运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0; OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H; CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH; CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H; CF=0;OF=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的 带符号数或无符号数时,它们所表示的十进制数是什么?

相关主题
相关文档 最新文档