汇编语言第3版答案
【篇一:汇编语言习题答案 (3)】
一、选择题(四选一)
1.表示一条处理器指令所在存储单元的符号地址是
a  变量 b  常量 c  标号 d  偏移量
2.汇编语言中的变量有多种类型属性,但错误的类型是
a  字节型byte b  字符型char
c  字型wordd  双字型dword
3.执行mov bx,seg var指令,bx得到变量var的。
a  物理地址 b  段地址 c  偏移地址 d  内容
4.masm语句中,采用
a  逗号 b  分号 c  冒号 d  空格
5.欲设定从偏移地址100h开始安排程序,可使用
a  org 100hb  start=100h
c  start db 100h d  start equ 100h
6.与“mov bx,offset var”指令等效的指令是
a  mov bx,var b  1ds bx,var
c  les bx,var  d  1ea bx,var.
7.下条语句
buf db l0 dup(3 dup(?,10),3,10)
汇编后,变量buf占有的存储单元字节数是  b  。
a  100 b  80 c  40  d  20
8.数据定义语句“numl dw(12 or 6 and 2) ge 0eh”,定义的num1单元的内容是。
a  0 b  0ffffh c  1 d  0ffh
9.要求将a、b两个字符的ascii码41h和42h顺序存放在连续两个字节存储单元中,可选用的语句是  a  。
a  db`ab' b dw `ab' c  db  0abh d dw 0abh
10.在汇编语言程序中,对end语句叙述正确的是
a  end语句是一可执行语句
b  end语句表示程序执行到此结束
c  end语句表示源程序到此结束
d  end语句在汇编后要产生机器码
11.下面的数据传送指令中,错误的操作是
a  mov ss:[bx+di],byte ptr 10h b  mov dx,l000h
c  mov word ptr[bx],1000hd  mov ds,2000h
12.下面指令执行后,变量dab中的内容是
daw dw 2a05h
dab db 0fah
?
mov al,byte ptr daw
sub dab,al
a  0dah b  0fah c  0f5h d  0d0h
13.根据下面的语句序列,ax寄存器的内容是。
tabdb 1,2,3,4,5,6
entry equ 3
?
mov  bx,offset tab
add  bx,entry
mov  ax,[bx]
a  0405h b  0304h c  0504h d  0403h
14.假设v1和v2是用dw定义的变量,下列指令中正确的是
a  mov v1,20h b  mov v1,v2
c  mov al,v1  d  mov 2000h,v2
15.若定义xyz  dw`a',则xyz字存储单元中存放的数据是
a  0041h b  4100h c  0061h d  6100h
16.使用伪指令定义:
val db 2 dup (1,2,3dup(3),2dup(1,0),1)
则在val存储区内前10个字节单元的数据是d 。汇编指令有多少个
a  1,2,3,3,2,1,0,1,2,3 b  1,2,3,3,3,3,2,1,0,1
c  2,1,2,3,3,2,1,0,2,1 d  1,2,3,3,3,1,0,1,0,1
二、填空题
1.用汇编语言编写的程序称为将它转换成二进制的机器语言程序,这种机器语言程序被称为_____目标代码程序_____ ,而转换的过程称为__汇编__________。它还必须用__连接________程序连接,才能生成可执行的程序.
3.汇编语言语句中,源操作数和目的操作数采用
4.指令“cmp ax,80h”中源操作数的寻址方式是
5.若定义“datavar db 0a5h,5bh”,填空指令“mov bx,datavar”,使该指令无语法错误。
6.若操作结果为零转向标号goon,应使用的语句为。
7.与指令“loop again”功能等效的两条指令依次是
8.用“dw 1234h”语句定义的一个字,如果改用db定义时,语句应为
  9.定义wdata dw l020h,则执行mov al,byte wdata指令后,。
10.如下数据定义:
v1 db 4dup(2),2
count equ 10
v2 dd count dup(?)
为变量v1分配  5  个字节存储;为变量v2分配  40  个字节存储.
11.现有变量定义如下:
ary dw 10 dup(?)
试填写执行如下指令的结果:
mov ax,type ary ; mov bx,length ary  ;
12.已知数据段如下:
org 0100h
ary dw 3,$+4,5,6
cnt equ $-ary
db 1,2,cnt,3
则执行如下指令后,ax=_0106h____,bx=_0308h_____。
mov ax,ary+2
mov bx,ary+10
masm的操作符“$”表示当前偏移地址,所以ary定义的$+4=102h+4=106h。同理,cnt=$-ary=108h-100h=8
13.程序段如下:
blk db 46h,84h,34h,-5,20h,22h,73h
?
mov cx,7
lea si,blk
next:  mov al,[si]
inc si
test al,81h
loopz next
mov bl,[si]
该程序段运行后,al=_84h_____、bl=__34h_______。
第一次顺序执行到test指令时,al=84h. 84h和81h相逻辑与的结果是80h,将使zf=0。随后执行loopz指令,因为zf≠1而终止循环;此时al=84h,因为si已经加1指向后一个数据,所以bl=34h。
14.如下源程序
;数据段
avar dw 0
bvar dw 0
cvar dw 10,20,30
;代码段
lea bx,cvar
mov ax,[bx]
mov bvar,ax
mov ax,[bx+2]
add ax,bvar
mov avar,ax
执行后,avar=30。
三、问答题
1.汇编语言中,伪指令语句与硬指令语句的本质区别是什么?
硬指令:每个硬指令就是一个处理器指令,在cpu执行时产生相应功能;
伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进行汇编。
②汇编:用汇编程序汇编源程序,产生obj目标程序。
③连接:用连接程序将目标程序转换为exe可执行程序。
④调试:用调试程序调试可执行程序。
  3.源程序中如何指明程序执行的起始点?
通常在起始指令设置一个标号(例如start),然后用“end start”伪指令说明该标号的指令为起始点。
  4.标号有哪三个属性?其含义是什么?
段地址:表示标号所在代码段的段地址。
偏移地址:表示标号所在代码段的段内偏移地址。
类型:引用该标号时,表示它所在同一个段——near类型,还是另外一个段——far
类型。
  5.说明如下两条语句的区别:
①xyz1 db 75
②xyz2 equ 75
①“xyz1 db 75”语句定义了一个字节变量xyz1,在主存存放了一个75的数据。
②“xyz2 equ 75”语句说明了一个常量xyz2,它代表75,它在主存中并没有存放任何
内容。
  6.下列语句在存储器中分别为变量数据区分配多少个字节单元?
①var5  dd 10 分配4个字节单元
②var6  dw 4 dup(?),2 分配10个字节单元
  四、程序阅读题
1.下述程序段运行后,从bxyz单元开始依次存放的数据是什么?
axyz db 0f8h
bxyz db 3dup(?)
?
lea di,bxyz
mov cx,3
mov al,axyz
lop:sar al,1
mov [di],al
inc di
loop lop
从bxyz单元开始依次存放0fch、0feh、0ffh
2.现有源程序如下:
;数据段
org 100h
block dw l,2,3,4,5,6,7,8,9
count equ ($-block)/2
resultdw count,?
;代码段
lea bx,block-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字存储单元的内容是什么?
result+2字存储单元的内容是9(最大值)
  ②bx等于多少?
bx等于110h
  ③程序循环了多少次?
程序循环了9次
  3.现有下列数据段:
string db`abcdefghijkl'
count  equ $-string
buffer db count dup(0)
下面程序段是实现把string中所有字符逆向传送到buffer缓冲区(即将string中第一个字符送到buffer的最后一个单元,sting中最后一字符送到buffer的第一个单元,??)。请把程序中所空缺的指令填上。
mov si,offset buffer-1
mov di,offset buffer
mov cx,count
  again:movsb
__sub  si, 2____
loop again
本题中目的存储区用di指示首地址,源存储区用si指示尾地址,以便实现逆向传送。如果串传送指令movsb采用增量方式(cld指令)则di和si都自动加1,而实际上si需要的是减1,所以第二个空缺位置应该填上“sub  si,2”。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。