汇编语言习题与答案
- 格式:doc
- 大小:71.50 KB
- 文档页数:7
汇编语言习题与答案
一、填空题:把答案填在题中横线上。
1. 8位无符号整数的表示范围为0~255,写成16进制形式为00H~__________;8位有符号整数的表示范围为-128~+127,写成16进制形式为__________~__________。
2. 8086/8088分段管理存储空间,但每段容量最大不超过__________。
3. 逻辑地址为F000:100的存储单元,其物理地址是__________。
4. 用来指示堆栈栈顶的偏移地址的是__________寄存器。
5. 若要测试AL寄存器D4、D2、D0位是否都为0,则可使用__________指令语句(含操作数),以产生转移条件。这条指令执行后 将利用标志位__________实现转移。
6. 若定义:bdata db 2 dup(1,2,2dup(3),4),则dbata变量前5个单元从低地址到高地址的数据依次是__________。
7. 假设varw是一个16位变量,则指令“mov varw,ax”的目的操作数的寻址方式是__________。
二、选择题:在每小题给出的四个选项中,只有一项是符合题目要求的,请把所选项前的字母填在题后的括号内。
1.对汇编语言源程序进行翻译,形成OBJ文件的是
A.汇编程序 B.连接程序
C.编辑程序 D.调试程序 [ ]
2.下列各个8位二进制数的补码中,真值最大的是
A.10001000 B.11111111
C.00000000 D.00000001 [ ]
3.MASM语句中,表达常数不正确的形式是
A.01101001B B. A346H
C.’A’ D. 5600 [ ]
4.如果SS=600H,则说明堆栈段物理地址起始于
A.60H B.600H
C.6000H D.60000H [ ]
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.假设AL=5,要使得AL=0FAH,应执行的指令是
A. not al B.and al,0fh
C.xor al,0f0h D.or al,0fh [ ]
8.设置逻辑段应该采用的一对伪指令是
A.segment/ends B.start/end start
C.proc/endp D.macro/endm [ ]
9.条件转移指令JNE条件是
A.CF=0 B.CF=1 C.ZF=0 D.ZF=1 [ ]
10.逻辑移位指令SHL可用于
A.有符号数乘以2 B.有符号数除以2
C.无符号数乘以2 D.无符号数除以2 [ ]
11.执行“in al, dx”指令后,进入AL寄存器的数据来自
A.寄存器 B.存储器
C.立即数 D.外设端口 [ ]
12.将十进制数75以压缩BCD码送入AX,正确的指令是
A.mov ax,0075 B. mov ax,0705
C.mov ax,0075h D. mov ax,0705h [ ]
13.如下指令可将AX寄存器内容改变的是
A. cmp ax,bx B. test ax,bx
C. and ax,bx D. xchg ax,bx [ ]
14.设AH=10H,执行“neg ah”指令后,正确的结果是
A. AH=10H、CF=1 B. AH=F0H、CF=0
C. AH=10H、CF=0 D. AH=F0H、CF=1 [ ]
15.如下程序段:
again: mov es:[di],al
inc di
loop again
可用指令__________完成相同的功能。
A. rep movsb B. rep lodsb
C. rep stosb D. rep stosw [ ]
三、问答题:
1.说明8086/8088两类标志各自的作用是什么?
2.子程序文档说明主要包含那些内容?
3.试述mov ax,offset var和lea ax,var两条语句的异同点。
4.循环结构程序具有哪3个组成部分?各自的作用是什么?
5.已知DS=2000H、BX=100H、SI=2,存储单元[21200H]~[21203H]依次存放(十六进制)2A 4C B7 65,说明下列每条指令执行完后AX寄存器的内容。
① mov ax,[1200h]
② mov ax,[bx+1101h]
③ mov ax,[bx] [si+1100h]
四、程序阅读题:
1.执行如下程序段后,AL= 、ZF= 。
mov al,ah
not al
add al,ah
inc al
2.对于如下数据定义,给出各条指令执行后的结果。
fldb dw 0a24fh
table db 32h,52h,0a2h,215 array db ‘ABCD’
count equ $-array
① mov ax,fldb ;AL=
② mov cl,table[2] ;CL=
③ mov ch,array ;CH=
④ mov dx,count ;DX=
3.现有程序段如下,
test al,80h
jz onebl
mov ah,1
jmp done
onebl: mov ah,0ffh
done: …
在 情况下,该程序段执行结果 AH=1;在 情况下,该程序段执行结果 AH=FFH。
4.下列指令段的功能是在数组中查找数据3,请在空格中填入应有的内容。
org 0120h
data1 dw 0,1,2,3,4,5,6,7,8,9
count equ $-data1
…
mov di,offset data1
mov ax,3
cld
mov cx,
scasw
又,该命令序列执行后,CX= 、DI= 。
5.设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。
mov ax,X
imul Y
mov cx,ax
mov bx,dx
mov ax,Z
cwd
add cx,axadc bx,dx
sub cx,540
sbb bx,0
mov ax,V
cwd
sub ax.cx
sbb dx,bx
idiv X
五、程序设计题:
1.按照如下要求各编写一段语句序列:
① 定义字节变量unpak,其中以非压缩BCD码形式存放十进制数1234;
② 写出指令,将一个字节数据58H输出到端口43H;
③ 将DX、BX、AX中的48位数右移1位。
2.已知数据段变量datax、datay、dataz定义如下:
datax dw 5678h,89abh
datay dw 9ef0h,1234h
dataz dw 2 dup (?)
编写一个程序段,实现将datax和datay中双字数据相加,并存入dataz单元。
3.用一个程序段完成“REP MOVSW”指令的功能。
4.编写一个程序段,用空格符将字符区char-field填满,该字符区的字符数在count字节变量中保存。
5.写一个子程序,将AX的内容以二进制的形式显示到屏幕上。
6.请编写一个完整的汇编语言源程序。要求如下:
① 数据段定义一个月份变量,存放数据1~12之间的月份;它对应12个月份的英文缩写,JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC。
② 主程序将月份传送给子程序。
汇编语言参考答案
一、 填空题
1. 8位无符号整数的表示范围为0~255,写成十六进制形式为00H~ FFH ,8位有符号整数的表示范围为-128~+127,写成十六进制形式为 80H ~ 7FH 。
2. 8086/8088分段管理存储空间,但每段容量最大不超过 64KB 。
3. 逻辑地址为F000:100的存储单元,其物理地址是 F0100H 。
4. 用来指示堆栈栈顶的偏移地址的是 SP 寄存器。
5. 若要测试AL寄存器D4、D2、D0位是否都为0,则可使用 test al,00010101b 指令语句(含操作数),以产生转移条件。这条指令执行后 将利用标志位 ZF 实现转移。