admin 管理员组

文章数量: 887021


2024年1月25日发(作者:jsp脚本的三种表示形式)

汇编语言期末复习题

一、单项选择题

1.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区第一个字单元的物理地址是( )。

A.12B5BH B.12B6BH C.12C59H D.12BFEH

2.在IN AL,PORT指令中,PORT称为( )。

A.立即数 B.有效地址 C.端口地址 D.寄存器名

3.在下列指令的中,不能实现把AX寄存器内容清零的指令是( )。

A.SUB AX,AX B.XOR AX,AX

C.OR AX,0000H D.AND AX,0000H

4.条件转移指令JNE的测试条件为 ( )。

A.ZF=0 B.CF=0 C.ZF=1 D.CF=1

5.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( )。

A.BX或CX B.CX或SI

C.DX或SI D.SI或DI

6.设(AX)=1000H,

NEG AX

NOT AX

执行上述两条指令后,正确的结果是( )。

A.(AX)=1001H B.(AX)=0FFFH;

C.(AX)=1000H D.(AX)=0111H。

7.串指令中的目的操作数地址一定是由( )提供。

A.ES:[DI] B.SS:[BP]

C.DS:[SI] D.CS:[IP]

8.将DX的内容除以2,正确的指令是( )。

A.DIV 2 B.DIV DX,2

C.SAR DX,1 D.SHL DX,1

9.用户为了解决自己的问题,用汇编语言所编写的程序,称为( )。

A.目标程序 B.汇编语言源程序

C.可执行程序 D.汇编程序

10.用一条指令仅实现将AX←BX+SI的方法是( )。

A.XCHG AX,[BX][SI]

B.MOV AX,[BX+SI]

C.LEA AX,BX[SI]

D.LEA AX,[BX][SI]

11.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( )。

A.1FFFH B.1998H C.1FFEH D.2002H

12.一个字为( )位二进制数。

A.8位 B.16位 C.32位 D.64位

13. 下列四个寄存器中,可作为八位寄存器的是( )。

A.AX B.CH C.BP D.IP

14. 设AL=0AH,下列指令执行后能使AL=05H的是( )。

A. NOT AL B. AND AL,0FH C. XOR AL,0FH D. OR AL,0FH

15.8086系统的存储器,存储单元的物理地址是( )位。

A.16 B.8 C.20 D.32

16.在双操作数指令中,目的操作数不能使用( )。

A.存储器 B.寄存器 C.立即数 D.段寄存器

17. 在执行下列指令时,需要使用段寄存器DS的指令是( )。

A. STOSW B. ADD AL,CL C. NEG BX D. INC DA[BX]

18.执行MOV BX,OFFSET TTR,结果相等的指令是( )。

A. MOV BX,TTR

B. LEA BX,TTR

C. PUSH TTR

POP BX

D. XCHG BX,TTR

19. 汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法( )

A. 名字的第一个字符可以是大写英文字母及小写英文字母

B. 名字的第一个字符可以是字母、数字及、@、_

C. 名字的有效长度≤31个字符

D. 在名字中不允许出现$

20.在下列指令中,有错误的是( )。

A.MOV AX,5634H B.MOV BL,3456H

C.MOV AL,75H D.MOV BX,57H

21. 无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是( )

A. ADD BH,01H B. OR BH,01H C. XOR BH,01H D. TEST BH,01H

22.下列指令中有错误的是( )。

A.POP AX B.MOV DS,AX C.ADD BX,25H D.SHR AX,8

23.下面各传送指令中,正确的是( )

A. MOV [DI],[SI] B. MOV[DX+DI],AL

C. MOV WORD PTR [BX],0100H D. MOV AL,BX

24.要使串操作指令从高地址向低地址执行,应把标志位置为( )。

A.TF=0 B.SF=1 C.IF=0 D.DF=1

25.下列语句格式有错误的是( )。

A. LEA BX,STR B.XCHG BL,AL

C.DATA:DB ‘AB’ D.EMP = EMP+1

二、简答题

1.写出完成下述功能的程序段:

(1)传送25H到AL寄存器

(2)将AL的内容乘以2

(3)传送15H到BL寄存器

(4)AL的内容乘以BL的内容

并请写出最后(AX)=?

2.写一程序段,求双字长数DX∶AX的相反数。

3.在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如:

PUSH AX

PUSH BX 保护现场

PUSH CX /

PUSH DX/

:

}恢复现场

试写出恢复现场时的指令序列。

4.完成下列操作,选用什么指令:

(1)将AX的内容,减去0520H,和上次运算的借位;

(2)将变量名TABL的段地址送AX;

5.D1 DB 20H DUP(?)

D2 DW D1

请写出用一条指令实现取D1的偏移地址=>SI中的三种方法。

6. 简述上机运行汇编语言程序的过程。

7.(6分)

ARY DW 10 DUP(?)

MOV AL,TYPE ARY

MOV BL,LENGTH ARY

MOV CL,SIZE ARY

上述MOV指令序列执行后的结果是什么?

8. 写出不使用串指令实现下列程序段相同功能的程序段。

MOV AX,DATA

MOV DS,AX

MOV ES,AX

LEA SI,X

LEA DI,Y

MOV CX,100

CLD

REP MOVSW

9. DA_BYTE LABEL BYTE

DA_WORD DW 20H DUP (?)

上面两条指令分别执行后,各将该数组中的第几个字节置0?

(1) MOV DA_WORD+2,0

(2) MOV DA_BYTE+2,0

三,程序分析题

1.(6分)有下面一段程序

A DW 1234H

B DW 5678H

:

PUSH A

PUSH B

POP A

POP B

试回答:

①上述程序段执行后(A)=_____,(B)=_____;

②设执行前SP=200H,执行后SP=____ 。

2. 现有下列程序段:

MOV AX,6540H

MOV DX,3210H

MOV CL,04

SHL DX,CL

MOV BL,AH

SHL AX,CL

SHR BL,CL

OR DL,BL

试问上述程序段运行后, (AX)=___(BL)=___(DX)= ___。

3.已知:

BX=4567H

NEG BX

INC BX

NEG BX

DEC BX

程序段执行后,BX=_______,CF=_______。

4.执行下列程序段后,回答问题。

ORG 1221H

NUM DW 12H

MOV AX,NUM

MOV BX, OFFSET NUM

MOV CL,BYTE PTR NUM+1

MOV CH,TYPE NUM

HLT

请问:(AX)=______,(BX)=______,(CX)=______。

5.现有一子程序:

SUB1 PROC

TEST AL,80H (检测AL中的数值最高位)

JE PLUS

TEST BL,80H

JNE EXITO

JMP XCHANGE

PLUS:TEST BL,80H

JE EXITO

XCHANGE:XCHG AL,BL

EXITO:RET

SUB1 ENDP

试回答:(1)子程序的功能是什么?

(2)若调用子程序前AL=9AH,BL=77H,则返回主程序时,AL=______,BL=______。

6.现有如下程序段:

DATA SEGMENT DA3 EQU1234H

ORG 0020H DA4 EQU $-DA2

DA1 DW 12H,23H DA5 DB31H,32H

DA2 DB 11H,21H DATA ENDS

注意:程序是从左到右看,先把左边的程序段看完了再看右边的程序段。下面的程序段以相同的方法进行读解。

请回答:(1)该程序段已占有的存储字节数是多少?

(2)符号名DA4的值是多少?符号名DA5的值是多少?

7.阅读如下程序:

ADRR DB XXH,XXH,......,XXH

NUM EQU $ -ADRR

RETT DB?

MOV CX,NUM

MOV BX,-l

DON: INC BX

CMP ADRR[BX],0

LOOPZ DON

JNZ NEXT

MOV BL,0FFH

NEXT: MOV RETT,BL

HLT

请问:(1)该程序完成的功能是什么?

(2)程序执行后指出RETT字节单元中的内容是什么?

8.阅读如下程序段,回答所提出的问题,假定Xl,X2,XN为无符号数。

ORG100H

BLOK DW X1,X2,...,XN

COUNT EQU ( $-BLOK)/2

RESULT DW COUNT,?

LEA BX,BLOK-2

MOV CX,RESULT

XOR AX,AX

GOON: ADD BX,2

CMP AX,[BX]

JAE NEXT

MOV AX,[BX]

NEXT: LOOP GOON

MOV RESULT+2,AX

程序段执行完,回答下述问题:

RESULT+2字存储单元的内容= ;

BX= ;

程序循环次数= 。

四、填空题

1. DR1 DB 10H,30H

DR2 DW 10H DUP(0,2 DUP(2))

……

MOV BL,LENGTH DR1

MOV CL,LENGTH DR2

请问指令执行后,BL和CL的值分别为 和 。

2. 十六进制数0FFF8H表示的十进制正数为_______,表示的十进制负数为_______。

3. CPU的标志寄存器中标志位,可以分为两大类,其中一类称为_____标志位,另一类称为______标志位。

4. 当标志位_____=1时表示无符号数运算产生溢出,而当标志位_____=1是表示带符号数运算产生溢出。

5. 通常主程序和子程序间参数传送的方法有三种: 、 、 。

6. 把A和B两个寄存器的内容进行异或运算,若运算结果是 ,那么A、B寄存器的内容必定相同。

7. 令(AL)= 98H,(BL)= 12H,则执行指令MUL BL后,(AX)= ,OF = ,CF = 。

8.下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。

XOR AX,AX

MOV BX,0

CONT: ADD AX,BX

LOOP CONT

9. 现有下列数据段:

DATA SEGMENT

STR1 DB‘ABCDEFGHIJKL’

COUNT EQU -STR1

BUF DB COUNT DUP(0)

DATA ENDS

下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。

MOV SI,OFFSET BUF-1

MOV DI,OFFSET BUF

MOV CX,COUNT

________

LOOP:MOVSB

________

LOOP LOP

10.BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。

MOV CX,32H

LEA SI,BEG

MOV DI,SI

DON:MOV AL,[SI]

MOV [SI],AL

DEC DI

LOOP DON

HLT

11. 指出下列指令中源操作数的寻址方式是什么?

(1)MOV AX,5

(2)MOV AX,BX

(3)MOV AX,[BP]

12. 下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合适的指令。

DATA SEGMENT

ARRAY DW 23ABH,1570H,567,1765H,46,5210H

COUNT EQU ($-ARRAY)/2

DA1 DB ?

DA2 DB ?

DATA ENDS

……

LEA SI,ARRAY

MOV CX,COUNT

LOP1:MOV AX,[SI]

JZ LOP2

INC BL

JMP LOP3

LOP2:INC BH

LOP3:

DEC CX

JNZ LOP1

MOV DA1,BL

MOV DA2,BH

13. 下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。

________________

AND AH,08H

________________

MOV AH,OFFH

JMP NEXT

ZERO:MOV AH,0

NEXT:……

14.计算机系统通过 与外围设备通信。

15.键盘I/O、显示I/O和打印I/O分别对应 、 和 号中断。

16.字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。每个字的第一个字节为显示字符的 ,第二个字节为显示字符的 。

17.在表 TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格处填入适当指令使其完整。

LEA BX,TABLE

MOV CX,10

MOV SUM,AX

MEXT: (1)

ADC AH,0

JNC DON

(2)

JC ENDO

DON: INC BX

(3)

ENDO: HLT

五,编程题

1.试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。

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

3.设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编写一个程序,求出A单元中给定数(<=15)的平方值送至B单元保存。

4.己知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。

5.已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。


本文标签: 指令 程序段 程序 寄存器 单元