发送汇编习题
一. 单项选择题:1.对汇编语言程序进行翻译,形成OBJ文件的是 a 。
A 汇编程序 B 连接程序
C 编辑程序 D 调试程序
2.下列各个8位二进制数的补码中,真值最大的是 d 。
A 10001000 B 11111111
C 00000000 D 00000001
3.MASM语句中,表示常数不正确的形式是 。
A 01101001B B A346H
C ‘A’ D 5600
4.8086存储器存储空间为1MB,其地址范围为 。
A 0-FFFH B 0-FFFFFH
C 0-FFFFH D 0-FFH
5.Dw 50 dup(?) 语句预留了 个字节存储空间。
A 25 B 50
C 100 D 200
6.下列指令中有操作数在代码段中的是 。
A mov ax,34h B add ax,bx
C inc word ptr[34h] D cmp ax,[34h]
7.堆栈的数据操作原则(方式)是 。
A 先进先出 B 先进后出
C 随机 D 循环
8.选择格式正确的移位指令是 。
A SHL BX,CX B SHL BX,CH
C SLL BX,CL D ROL AL,CL
9.假设AL=5,要使得AL=0AH,应执行的指令是 。
A not al B and al,0fh
C xor al,0f0h D or al,0fh
10.设置逻辑段应该采用的一对伪指令是 。
A proc/endp B start/end start
C segment/ends D macro/endm
11.执行or al,80h后,可以肯定的执行结果是AL寄存器的 。
A 最高位为0 B 最高位为1
C 低7位均为0 D 低7位均为1
12.若标志DF为0,则执行串操作MOVS指令后,寄存器SI,DI会 。
A 不变 B 减量
C 增量 D 不定
13.如下指令可将寄存器内容改变的是 。
A cmp ax,bx B test ax,bx
C and ax,bx D xchg ax,ax
14.MUL CL指令实现 功能。
A 有符号乘法:AX AL×CL B 无符号乘法:DX AL×CL
C 有符号乘法:DX AL×CL D 无符号乘法:AX AL×CL
15.执行下面指令序列后,结果是 。
MOV AL,93H
CBW
A AX=FF93H B AX=8093H
C AX=0093H D AX=0F93H
16.对汇编语言程序进行翻译,形成EXE文件的是 。
A 汇编程序(masm) B 连接程序(link)
C 编辑程序(edit等) D 调试程序(debug)
172.下列各个8位二进制数的补码中,真值最小的是 。
A 10001000 B 11111111
C 00000000 D 00000001
18.MASM语句中,表示常数不正确的形式是 。
A 01101001B B 5600
C ‘A’ D A346H
19.8086存储器存储空间为1MB,其地址范围为 。
A 0-FFFH B 0-FFFFFH
C 0-FFFFH D 0-FFH
20.执行 mov bx,seg var指令,bx得到变量var的 。
A 物理地址 B 偏移地址
C 段地址 D 有效地址
21.下列汇编指令中,源操作数为立即数的是 。
A mov ax,34h B add ax,bx
C inc word ptr[34h] D cmp ax,[34h]
22.在汇编指令Next:mov al, [si]中,next:是 。
A 行号 B 标号
C 变量名 D 指令
23.欲设定从偏移地址100开始安排程序,可使用 伪指令。
A start=100 B start db 100
C org 100 D start equ 100
24.若定义xyz dw ’A’,则xyz字存储单元中存放的数据是 。
A 0041H B 4100H
C 0061H D 6100H
25.设置子程序应该采用的一对伪指令是 。
A macro/endm B start/end start
C segment/ends D proc/endp
26.执行and al,08h后,可以肯定的执行结果是AL寄存器的 。
A 最高位为0 B 最高位为1
C 低7位均为0 D 低7位均为1
27.在移位指令中,当移位次数大于1时,应先将移位次数置于 寄存器中。
A CH B DH
C DL D CL
28.如下指令可将AX寄存器的内容改变的是 。
A cmp ax,bx B test ax,bx
C and ax,bx D xchg ax,ax
29.汇编语言中的变量有多种类型属性,但错误的类型是 。
A 字节型byte B 字符型char
C 字型word D 双字型dword
30.在汇编语言程序中,对END语句描述正确的是 。
A END语句是一可执行语句 B END语句表示程序执行到此结束
C END语句表示源程序到此结束 D END语句汇编后产生机器码
二、填空题:
1.在80x86微机的输入/输出指令中,可以在指令中直接指定00~FFH的端口号,则可直接由指令指定的I/O端口数为 。
2.在MOV AX,[BX] [SI]中,源操作数采用的是_____________ ______
寻址方式。
3.与mov bx, offset buf等效的LEA指令是_ ___ _ ___。
4.十六进制数1FD4H转换为二进制数的值是 ,转换为十进制数的值是 。
5.若定义:bdata db 3 dup(1, 2 , 4),则bdata变量前5个单元从低地址到高地址的数据依次是 。
6.从逻辑地址为0700:100开始的一个8个字的数据区,其最后一个字的物理地址是 。
7.在BIOS功能调用中,负责显示输出的显示I/O中断为 号中断,负责键盘输入的键盘I/O中断为 号中断,而在DOS中,负责基本I/O功能调用的I/O中断是 号中断。
8.机器数一般用最有效位来表示数的符号,正数用 表示,
负数用 表示。
9.汇编语言中,源操作数和目标操作数采用_____________ ______分隔。
10.与LEA BX, buf等效的MOV指令是_ ____ ___。
11.11110110B= D = H 。
12.已知数据段如下:执行指令mov ax,ary+2后,ax= 。
Org 0100H
Ary dw 3,4,5,6
Cnt equ $-ary
Db 1,2,cnt,3
13.在BIOS功能调用中,负责显示输出的显示I/O中断为 号中断,负责键盘输入的键盘I/O中断为 号中断,而在DOS中,负责基本I/O功能调用的I/O中断是 号中断。
三、简答题:
1.指出下列指令中的错误并改正
(1) mov BH, AX
(2) mov BYTE PTR [BX],1000
(3) mov [BX], [SI]
2.写出把首地址为ARRAY的字数组的第5个字送DX寄存器的指令.要求使用以下几种寻址方式。
(1) 寄存器间接寻址
(2) 寄存器相对寻址
(3) 基址变址寻址
3.请用8位二进制补码计算下列表达式的值,并用十六进制数表示。
(1)85H+(-76H) (2)(-85H)- 76H
4.已知(DS)=2000H、(BX)=0100H、(SI)=0002H,存储单元(20100H)-(20103H)依次存放(十六进制)12H 34H 56H 78H,存储单元(21200H)-(21203H) 依次存放(十六进制)2AH 4CH 0B7H 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax, [1200h] (ax)=( )
(2) mov ax, [bx+1100h] (ax)=( )
(3) mov ax,[bx][si+1100h] (ax)=( )
5.画图说明下列伪指令所定义的存储空间及初始化的数据值。
WORD_VAR DW 2 DUP(0,1,2), ?,’BY’,256H
6.指出下列指令中的错误并改正
(1) mov BH, 1000
(2) mov BYTE PTR [BX],1000
(3) mov cs, ax
7.写出把首地址为ARRAY的字数组的第5个字送DX寄存器的指令.要求使用以下几种寻址方式。
(1) 寄存器间接寻址
(2) 寄存器相对寻址
(3) 基址变址寻址
8.请用8位二进制补码计算下列表达式的值,并用十六进制数表示。
(1)(-85H)+76H (2)85H-(- 76H)
9.已知(DS)=2000H、(BX)=0100H、(SI)=0002H,存储单元(20100H)-(20103H)依次存放(十六进制)12H 34H 56H 78H,存储单元(21200H)-(21203H)依次存放(十六进制)2AH 4CH 0B7H 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax, [1200h] (ah)=( )
(2) mov ax, [bx+1100h] (al)=( )
(3) mov ax,[bx][si+1100h] (ax)=( )
10.画图说明下列伪指令所定义的存储空间及初始化的数据值。
BYTE_VAR DB 2 DUP(1,2,2 dup(0)), ’BY’, 56H
四、程序阅读题:
1.下列程序段运行后,AX= 、 CF= 。
mov ax, 0bc5fh
mov bx, 0cfbh
xor ax, bx
or ax, bx
2.假设AX=1234h,执行如下程序段后,AX= 、 BX 。
inc ax
mov bx,ax
neg bx
add ax,bx
3.假设程序中的数据定义如下: Buf 1 db 30 DUP(?)
Buf 2 db 20 DUP(?)
Buf 3 db 1,2,3,4,5,6
(1) 用一条指令将Buf3的头两个字节的内容放入SI。
(2) 写一条伪操作使Buf3_lenght的值等于Buf3域的实际长度。
4.下列指令段的功能是在数组中查找数据3,请在空格中填入应有的内容。
Org 120h
datal db 0,1,2,3,4,5,6,7,8,9
count equ $-datal
...
mov di,offset datal
mov al,3
cld
mov cx,
Repnz scasb
该命令序列执行后,CX=
DI= 。
5.阅读下列程序段,写出该程序段所执行的功能。
…
Mov ch,4
Again: Mov cl,4
Rol bx,cl
Mov al,bl
And al,0fh
Add al,30h
Cmp al,3ah
Jl disp
Add al,7h
Disp: mov dl,al
Mov ah,2
Int 21h
Dec ch
Jnz again
...
6.下列程序段运行后,BX= 。
mov cl, 3
mov bx, 0b7h
rol bx, 1
rol bx, cl
7.对于下面定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP(?)
TABLEB DB ’ABCD’
(1)MOV AX,TYPE FLDB (AX)= 。
(2)MOV CX,LENGTH TABLEA (CX)= 。
五、程序设计题:
1.分别用一条汇编语言语句完成如下功能:
(1)将AX中的高字节和低字节内容交换;
(2)定义字符串变量string的值为happy;
(3)将AX寄存器清零;
2.编写程序段,要求不改变DH的内容,但要清除其最左边3位的值,结果存入BH寄存器。
3.设有两个无符号字数据X和Y,请写出程序段:比较X、Y的大小。若X大,则输出字母X,若Y大,则输出字母Y。
4.编写一个段内调用子程序find_char。子程序的参数是一个N字节数组的首地址Table,数N及字符CHAR。要求在N字节数组中查找字符CHAR,并记录该字符的出现次数。
5.有一个首地址为ARRAY的M字数组,试编写一个程序段:求出该数组的内容之和(不考虑溢出),并把结果存入TOTAL中。
6.编写程序段,要求把BL中的数除以CL中的数,并把其商乘以2,最后结果存入DX寄存器中。
7.如(AX)=0012H,(BX)=0034H,要求把它们装配在一起形成(AX)=1234H,写出相应的指令语句。
8.编写一个段内调用子程序disp,用来显示一个字符Y,并输出回车和换行。
9.请编写一个完整的汇编语言源程序,要求如下:
从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。