汇编语言题目答案-(4)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章自测练习

一、选择题(四选一)

1.设计子程序应该采用的一对伪指令是__C_________。

A segment/ends

B start/end start

C proc/endp

D macro/endm

2.主程序将它的参数带给子程序,这个参数被称为 A 。

A 入口参数

B 出口参数

C 寄存器参数

D 存储器参数

3.对应主程序CALL指令调用子程序,子程序结束通常采用__D_______ 指令返回主程序。

A jmp

B iret

C hlt

D ret

4.下面程序段条件转移语句发生跳转的条件是AL=___D_____ 。

cmp al,0fbh

jnl next

A 80h

B 8fh

C 0f0h

D 0ffh

5.如下程序段中的“dec cx”指令执行了_C________ 次。

mov cx,4

jcxz next

again:dec cx

jnz again

next:...

A 0

B 1

C 4

D 5

二、填空题

1.程序的基本结构有顺序、分支、循环和子程序四种。

2.子程序可以通过__寄存器_、存储单元、(地址表)、_堆栈_等传递参数。

3.循环结构的程序通常由初始部分、循环体和循环控制三部分组成。

4.如果主程序调用与它处在同一个代码段的子程序,这是段内调用。

5.下面程序段完成将存储单元abcd1中一个压缩型BCD码拆成两个非压缩型BCD 码,高位BCD码存放在abcd3单元,低位BCD码存放在abcd2单元,再分别转换为对应的ASCⅡ码。请将程序补充完整:

mov al,abcdl

mov cl,4

shr al,cl

Or al,30h

mov abcd3,al

mov al,abcdl

and al, 0fh

orl al,30h

mov abcd2,al

6.在下述程序段的每一空框内填入一个语句,以实现如下功能:字节变量string中存放着一个字符串,以0DH为结束标志,求串长度并送字变量count中。

lea si,string

mov al,0dh

xor cx,cx

goon:cmp al,[si]

jz next

inc cx

_inc si_________

jmp goon

next:mov cont,cx

7.下述程序段运行后,AL=__88h_______、CL=__80h_ ___。

mov al,38h

mov bl,49h

call sub0

inc al

dec cl

sub0 proc

add al,bl

mov cl,al

daa

ret

sub0 endp

daa:加法的十进制调整指令

(AL)←把AL的和调整到压缩的BCD格式

这条指令执行前必须执行ADD或ADC指令,加法指令必须把两个压缩的BCD码相加,并把结果存放在AL寄存器中。

本指令的调整方法:若AF标志(辅助进位位)为1,或AL寄存器的低4位是16进制的A~F,则AL寄存器内容加06H,且将AF位置1。

若CF标志为1,或AL寄存器的高4位是16进制的A~F,则AL寄存器内容加60H,且将CF位置1。

DAA指令对OF标志无定义,但影响所有其他条件标志。

8.阅读如下子程序,说明它的功能:

sumary proc

xor ax,ax

xor dx,dx ;执行后,DX= 0 。

again:add ax,[bx]

adc dx,0 ;执行的操作是DX= DX+0+CF 。

inc bx

inc bx

loop again ;发生转移的条件是:cx ≠0 。

ret

sumary endp

子程序的入口参数:DS:BX=_16数组首地址、CX=_数据个数。

子程序的出口参数:AX=_求和结果低16位、DX=_求和结果高16位。

子程序功能为:_将CX个16位无符号数求和。

三、问答题

1.什么是多重循环?

循环体中存在循环结构就形成多重循环。

2.于程序中为什么需要现场保护和恢复?如何实现?

主程序和子程序可能都要使用某个现场数据,例如,寄存器内容。如果子程序不进行保护,就会改变原来的内容,返回主程序后将使主程序产生错误的执行结果。所以,通常子程序开始保护现场数据,返回之前恢复原来的数据。

现场保护和恢复通常借用堆栈区实现,也可以采用特定区的方法。也就是把现成数据暂存入堆栈区域或特定存储区实现保护。实现恢复则是从堆栈或存储区取出被保护的数据。

3.试述过程定义的一般格式。

过程定义采用proc和endp一对伪指令实现,有一个用户定义的过程名(subname),可以选择是近(near)调用还是远(far)调用。这对伪指令中间是过程体,有任意合法的汇编语言语句组成,如下所示:

subname proc[near/far] ; 过程定义

....... ; 过程体

subname endp ; 过程结束

4.什么是子程序嵌套和子程序递归?

子程序中又调用子程序就形成子程序嵌套。

子程序中直接或间接调用该子程序本身就形成子程序递归。

5.说明子程序参数传递的三种主要方法。

寄存器、共享变量(公共存储单元)、堆栈

四、程序阅读题

1.dal数据区中有50个字节数据,下面程序段将每个数据的低四位变反,高四位不变,

相关文档
最新文档