文档库 最新最全的文档下载
当前位置:文档库 › 汇编习题(含答案)

汇编习题(含答案)

汇编习题(含答案)
汇编习题(含答案)

第一章基本知识

一、单项选择题

1.若十进制数为13

2.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的存储器组织是将存储器划分为段,可作为段的起始地址的是( B )。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个字节

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字单元内容。

答:

字节

(2)(00102H)字=7845H

第三章 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

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

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个相邻字节单元中存放有转移地址,其中前两个字节存放的是____ 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

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

https://www.wendangku.net/doc/1f10438569.html,MON

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.字符串

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

答:

(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

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

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'

display:

mov ah,2h

int 21h

dec cx

jnz loop2

exit:MOV AH,4CH INT 21H CODES ENDS

END START

相关文档