汇编习题(含答案)

更新时间:2023-12-19 14:21:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 基本知识

一、单项选择题

1.若十进制数为132.75,则其十六进制数为( B ) A.21.3 B.84.C C.4.6 D.6

2.若[X]补=11111,则其十进制真值为( C ) A.-31 B.-15 C.-1 D.31

3.已知X=78,Y=-83则[X+Y]补=( C ) A.0F5H B.0A1H C.0FBH D.65H

4.已知[X]补=98H, 则[X]补/2=( A ) A.0CCH B.4CH C.49H D.31H 二、填空题

1.(35)10 = (23)16。 2.(15)10 = (1111)2。

3. 计算机的存储容量1KB = (1024)Byte。 4. 计算机的存储容量1MB = (1024)KB。 5. 计算机的存储容量1GB = (1024)MB。

第二章 8086计算机组织

一、单项选择题

1.在微机系统中分析并控制指令执行的部件是( C ) A.寄存器 B.数据寄存器 C.CPU D.EU

2.在计算机的CPU中执行算术逻辑运算的部件是( A ) A.ALU B.PC C.AL D.AR

3.能被计算机直接识别的语言是( C ) A.C语言 B.汇编语言

C.机器语言 D.面向对象语言

4.8086/8088的存储器组织是将存储器划分为段,可作为段的起始地址的是(A.185A2H B.00020H B.01004H D. 0AB568H

5.堆栈中当前出栈的存储单元地址是( A ) A.SS*10H+SP B.SS*10H+BP C.SS*10+SP D.SS*10+BP 6.标志寄存器中属于控制标志位的是( B ) A.DF, OF, SF B.DF, IF, TF C.OF, CF, PF D. AF, OF, SF

7.8086/8088存储器分段,每个段不超过( D ) A.64K个字 B.32K个字节

1

B )。 C. 1M个字节 D. 64K个字节 二、填空题

1. 假设某个字的值为1234H,其低位字节地址是20H,高位字节地址是21H,那么该字的地址是_______20H_____________。 2. 在8086/8088控制寄存器中,_______IP_________寄存器内容始终指向下一条指令的首地址,此时该指令物理地址计算式是_____CS*10H+IP__________________。

3. CPU的标志寄存器中标志位,可以分为两大类,其中一类成为___状态标志位________,另一类称为____控制标志位________标志位。

4. 当标志位___CF___=1时候表示无符号数运算产生溢出。而当标志位__OF______=1是表示带符号位数运算产生溢出。 三.简单题

1. 实模式下写出段地址和偏移地址为 1234:2002、1430:0042、FF00:0FFF的物理地址。 答:物理地址=段地址*10H+偏移地址 (1)14342H (2)14342H (3)FFFFFH

2.从物理地址为00100H开始到00103H单元中顺序存放的数据为12H,34H,56H,78H。请画出数据存放示意图,并回答一下为题: (1)写出地址00101H字节单元的内容。 (2)写出地址00102字单元内容。 答: 00100H 00101H 00102H 00103H (1)(00101H)字节=34H (2)(00102H)字=7845H

12H 34H 45H 78H 第三章 IBM PC机的寻址方式和指令系统

一、选择题

1.MOV AX,ES:[1000H] 源操作数的寻址方式是( B ) A.立即寻址 B.直接寻址 C.变址寻址 D.基址寻址

2.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是( C ) A.基址寻址 B.立即寻址

C.变址寻址 D.基址变址寻址

3.MOV DX,COUNT[BP][DI]的源操作数的寻址方式是( D ) A.变址寻址 B.基址寻址 C.直接寻址 D.基址变址寻址

4.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B ) A.AX,BX,CX,DX B.BX,BP,SI,DI C.SP,IP,BP,DX D.CS,DS,ES,SS

5.下列四组寄存器中,属于通用寄存器的是( A ) A.AX,BX,CX,DX

2

B.SP,BP,IP C.SI,DI,FLAGS D.上属三者都是

6.指令指针寄存器是(A) A.IP B.SP C.BP DBX

7.指令MOV BX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为(B)

A.17500H B.16500H C.14500H D.13500H

8.指令MOV AX,COUNT[BX],若COUNT=0400H,SS=1200H,DS=1000H,BX=5000H,那么物理地址为(C)

A.17400H B.17000H C.15400H D.14500H

9.8086/8088系统中,存储器是分段组织的,存储器物理地址计算式是(B) A.段地址+偏移地址 B.段地址*10H+偏移地址 C.段地址*16H+偏移地址 D.段地址+10H*偏移地址

10.当程序顺序执行时,每取一条指令语句,IP指针增加的值是( D )。 A.1 B.2 C.3 D.由指令长度决定的 11.下列属于合法的指令是( D )

A.MOV DS,ES B.MOV [SI],[DI] C.MOV AX,BL D.MOV [DI],BL 12.下列传送指令中有语法错误的是( A )。 A.MOV CS,AX B.MOV DS,AX C.MOV SS,AX D.MOV ES,AX

13.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是(D)

A.表示结果中含1的个数为偶数 B.表示结果中含1的个数为奇数 C.表示该数为偶数 D.表示结果中低八位含1的个数为偶数

14.下面指令执行后,改变AL寄存器内容的指令是( D )。 A.TEST AL,02H B.OR AL,AL C.CMP AL,BL D.AND AL,BL

15.与MOV BX,OFFSET VAR指令完全等效的指令是( D )。 A.MOV BX,VAR B.LDS BX,VAR C.LES BX,VAR D.LEA BX,VAR 16.将DX的内容除以2,正确的指令是(C)。 A.DIV 2 B.DIV DX,2 C.SAR DX,1 D.SHL DX,1 17.下列数值表达式和地址表达式中,错误的是( D )。

A.MOV AL,8*14+4 B.MOV SI,OFFSET BUF+13 C.MOV CX,NUM2-NUM1 D.MOV CX,NUM2+NUM1

18.为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是( C )。 A.NC CX JZ MINUS B.SUB CX,OFFFFH JZ MINUS

3

C.AND CX,OFFFFH JZ MINUS D.XOR CX,OFFFFH JZ MINUS 19.完成对CL寄存器的内容乘以4的正确操作是( C ) A.ROL CL,1

B.MUL 4 ROL CL,1 C.SHL CL,1 SHL CL,1 D.MOV CL,2 SHL CL,CL

20.在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D ) A.STOSW B.LODSW C.SCASW D.CMPSW

21. AL=0AH,下列指令执行后能使AL=05H的是( C ) A.NOT AL B.AND AL,0FH C.XOR AL,0FH D.OR AL,0FH

22. 下面指令执行后,改变AL寄存器内容的指令是( D )。 A、TEST AL,02H B、OR AL,AL C、CMP AL,BL D、AND AL,BL 23.堆栈指针SP的内容是(B)

A.栈顶单元内容 B.栈顶单元地址 C.栈底单元内容 D.栈底单元地址

24. 执行指令PUCH CX后堆栈指针SP自动(C) A.+1 B.不操作 C.-2 D.-1

25. 指令ADD ES:[DI],AX和存放在(B) A.寄存器 B.附加段 C.堆栈段 D.代码段

26.将DX的内容除以2,正确的指令是(C)。 A.DIV 2 B.DIV DX,2 C.SAR DX,1 D.SHL DX,1 27. 下列数值表达式和地址表达式中,错误的是( D )。

A.MOV AL,8*14+4 B.MOV SI,OFFSET BUF+13 C.MOV CX,NUM2-NUM1 D.MOV CX,NUM2+NUM1

28.为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是( C )。 A.INC CX JZ MINUS B.SUB CX,OFFFFH JZ MINUS C.AND CX,OFFFFH JZ MINUS D.XOR CX,OFFFFH JZ MINUS 29. 在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D ) A.STOSW B.LODSW C.SCASW D.CMPSW 30. 下面指令中,合理而有意义的指令是(D)。

A.REP LODSB B.REP SCASB C.REP CMPSB D.REP MOVSB 二、填空题

1.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为___20A8H _____,其物理地址为___11488H _____。

2.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是____ IP____,而后两个字节存放的是____ CS____。

3.下列指令属于基址加变址寻址方式的是( MOV DX,DS:[BP][SI] )。

4.在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是___ STOS____或___ CMP__才有实际意义。

5.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两

4

个字节存放的是____ IP____,而后两个字节存放的是____ CS____。 6.已知

AX=0FF60H,CF=1 MOV DX,96 XOR DH,0FFH SBB AX,DX

执行上述指令序列后,AX=_________0__________,CF=______0__________。 7.设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH

执行上述指令序列后,AL=______79H ___,BL=__06H ___CL=_7FH___。 8. 已知

AX=0A33AH,DX=0F0F0H AND AH,DL XOR AL,DH NEG AH NOT AL

执行上述指令序列后,AH=____60H____,AL=_____35H_。 9.执行下面指令序列后,结果是( AX=0FF82H )。 MOV AL,82H CBW

10. MOV AH,7896H ADD AL,AH

上述指令执行后,标志位CF和OF的值是( CF=1,OF=0 )。

10.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为(OF=1,CF=1 )。 三.综合题

1.在debug下设置(SP)=20H,设置AX,BX,CX,DX为不同值,把这四个寄存器内容依次压入堆栈,再从堆栈中依次弹出到SI、DI、BP、BX寄存器。写出一段程序实现上述操作,并画出每条入栈指令执行后SP和堆栈中数据的变化。 答:(1)修改(SP): -r SP SP **** :20

AX,BX,CX,DX相同方式 (2)push AX Push BX Push CX Push DX 。。。 Pop BX Pop BP Pop DI

5

Pop SI

2.测试AL寄存器,如果最高位和最低位同时为0,则转L0,如果最高位和最低位只有一个为1,则转L1,如果最高位和最低位同时为1,则转L2,画出流程图,并写出程序段。 答:参考 ROL AL,1 AND AL,3 JZ L0 SUB AL,3 JZ L3 JMP L2

第四章 汇编语言程序格式

一.选择题

1.下列叙述正确的是(C)。

A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令 2.源程序结束语句为(C)

A.ENDP B.ENDS C.END MAIN D.END

3.SKY:MOV AL,20H中操作数为(D) A.MOV B.SKY C.AL或20H D.AL和20H 4.下列为不合法的标志符的是(B) A.AXYZ B.5SKY C.@ATT D.?ABC 5.下列地址表达式正确的是(C) A.[BX-SI] B.[BP-DI] C.[BX+2] D.[BP+BX] 6.NEAR标号的类型值为(B) A.2 B.-1 C.4 D.-2

7.组合类型中本段与其它段无逻辑关系,每段均有自己的基址的组合类型是(A) A.NONE B.PUBLIC C.COMMON D.STACK

8.下面哪一个命令是显示内存单元的内容?(A) A.D命令 B.E命令 C.F命令 D.R命令

9.取变量偏移属性的分析运算符是(A) A.OFFSET B.TYPE C.SIZE D.SEG

10.分析运算符LENGTH只有用(C)定义的变量才有意义。 A.表达式 B.字符串

6

C.DUP D.疑问号 11.在段定义中,(B)是默认的定位类型 A.PAGE B.PARA C.WORD D.BYTE

12.定义缓冲区BUF,保留100个字节存储空间的语句是(D)。 A.BUF DB 100 B.BUF DW 100

C.BUF DW 100 DUP(?) D.BUF DB 100 DUP(?) 13.使计算机执行某种操作的命令是(B) A.伪指令 B.指令 C.标号 D.助记符

14.使用DOS系统功能调用时,使用的软中断指令是(b) A.INT 21 B.INT 10H C.INT 16H D.INT 21H 二.填空题

1.比较两个带符号的数A、B,当A=B时程序转移,测试的条件为( F=1) 2.指令JMP FAR PTR DONE属于(段间转移直接寻址)。

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

4.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是(进位值在CF中,校正后根据CF内容再加在AH中) 5.执行后使BX=0的同时也使CF=0,OF=0的指令是( OR BX,BX )

第五章 循环与分支程序设计

一、选择题

1.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D )。 A、CMP B、SUB C、AND D、MOV

2. 测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( B)。

A. TEST BL,4FH JZ NEXT

B. XOR BL,4FH JZ NEXT

C. AND BL,4FH JZ NEXT

D. OR BL,4FH JZ NEXT 二、填空题

1. 下列程序段将AX中值乘以9,请将程序填写完整 (1)__________ MOV CL,3

(2)____________ POP BX

ADD AX,BX 答:

7

(1)PUSH AX (2)SHL AX,CL 2.

MOV BL,64H MOV CL,03H XOR AX,AX

AGAIN:ADD AL,BL ADC AH,0 DEC CL JNZ AGAIN 问:

(1)该程序段完成的功能是:将AX内容乘3送BX中 (2)AX=___012CH_____。

3.设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。 TEST AX,8000H

__JE K1或JZ K1_________ MOV PLW,BX JMP DONE

K1:__MOV PLW,A_______ DONE:

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

____ JE ZERO_____ MOV AH,OFFH JMP NEXT

ZERO:MOV AH,0 NEXT:??

5.下列程序段求数组ARRAY的累加和。请将程序填写完整。 ARY DW 45H,68H,????,0ABC1H,9600H;共10项 COUNT DW 10 (1)__________ MOV CX,COUNT XOR AX,AX

AGAIN:ADD AX,[SI] ADD SI,2

(2)____________ 答:

(1)LEA SI,AKY (2)LOOP AGAIN

6.以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。

BUF DB 5,6,7,58H,62,45H,127,?? COUNT EQU $-BUF

8

MAX DB? ┇

MON BX,OFFSET BUF MOV CX,COUNT-1 MOV AL,[BX] LOP1:INC BX

____ CMP AL,[BX]_______ __ JAE NEXT

MOV AL,[BX] NEXT:DEC CX

_____ JNZ LOP1___________ MOV MAX,AL 三、编程题

1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答: BEGIN:MOV AH,1 INT 21H CMP AL,’a’ JB STOP CMP AL,’z’ JA STOP

SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP BEGIN STOP:RET

2. 在给定个数的数中寻找最大值,放至指定的存储单元。 参考程序:

DATA SEGMENT

BUFFER DB 2,4,3,6,1,5 COUNT DW 6 MAX DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX

MOV CX, COUNT LEA BX, BUFFER MOV AX, [BX] INC BX DEC CX

AGAIN: CMP AX, [BX] JGE NEXT

9

MOV AX, [BX] INC BX NEXT: INC BX

LOOP AGAIN CODE ENDS END START

第六章 子程序

一.编程题

1.主程序从键盘输入两个4位的十六进制数A和B,用子程序做十六进制计算A+B,并显示计算结果。 参考:

CODES SEGMENT ASSUME CS:CODES START: mov bl,0 mov cx,8 loop1: clc

mov ah,1h int 21h cmp al,'0' jz rotate stc rotate: rcl bl,1 dec cx jnz loop1 print: neg bl

mov dl,0dh mov ah,2h int 21h mov dl,0ah int 21h mov cx,8 clc loop2: rcl bl,1 jnc dis0 mov dl,'1' jmp display dis0:

mov dl,'0'

10

display:

mov ah,2h int 21h dec cx jnz loop2

exit:MOV AH,4CH INT 21H

CODES ENDS END START

11

本文来源:https://www.bwwdw.com/article/9bx5.html

Top