好文档 - 专业文书写作范文服务资料分享网站

最新汇编语言程序设计(第四版)第5章【课后答案】

天下 分享 时间: 加入收藏 我要投稿 点赞

汇编语言程序设计 【课后习题答案】

第五章高级汇编语言程序设计

第四版

--囮裑爲檤

5. 1条件表达式中逻辑与 “ &&表示两者都为真,整个条件才为真,

对于程序

段:

.if (X==5) && (ax!=bx) inc ax .endif

请用转移指令实现上述分支结构,并比较汇编程序生成的代码序列。解:

cmp X, 5 je abc jmp done abc: cmp ax, bx

jne cde jmp done cde: inc ax

done:....

5. 2条件表达式中逻辑与“|表示两者之一为真,整个条件就为真,.if (X==5) || (ax!=bx) inc ax .endif

请用转移指令实现上述分支结构,并比较汇编程序生成的代码序列。cmp X, 5 je abc jmp done cmp ax, bx jne abc jmp done abc: inc ax done: ....

5.3、对于程序段: .while ax!=10 mov [bx],ax inc bx

对于程序段:

解:

inc bx inc ax

.endw 请用处理器指令实现上述循环结构,并比较汇编程序生成的代码序列。

5.4、 对于程序段: .repeat

mov [bx],ax inc bx inc bx inc ax

■until ax=10 请用处理器指令实现上述循环结构,并比较汇编程序生成的代码序列。

5.5、 宏是如何定义、调用和展开的?

解:

宏定义采用一对伪指令实现,格式如下(其中方括号表示可选): 宏名 macro [形参表]

宏定义体

endm

宏调用时,利用宏名带上实参即可,格式如下: 宏名[实参表]

5.6、 宏定义中的形式参数有什么特点,它是如何进行形参和实参结合的?

解:

宏的参数功能非常强大,即可以没有参数,也可以带有一个或多个参数;而且 参数的形式非常灵活,可以是常量、变量、存储单元、指令或它们的一部分, 还可以是表达式等。

宏展开时的形参与实参结合是用位置匹配的实参对形参进行取代。实参个数与 形参个数不同时,多余的实参没有作用,缺少的实参则用空格代替。取代时, 不进行有效性等检查。

5.7、 宏结构和子程序在应用中有什么不同,如何选择采用何种结构?

解:宏汇编的特点是在汇编阶段进行语句展开,无需返回,不减少目标程序代 码,执行速度没有改变;通过形参、实参结合传递参数。宏汇编适合于程序段 较短或要求执行速度快的场合。

子程序在执行阶段需要由主程序执行调用指令

CALL进行调用,进而转入子

程序执行,子程序执行结束执行返回指令 RET返回主程序。子程序如果被多次 使用,则会减少目标程序代码;主程序与子程序之间主要采用寄存器、存储单 元、堆栈等传递参数。子程序适合于程序段较长或为减少目标代码的场合

5.8 没有。。。

5.9、 对于例题5.5b的宏定义shrot,对应如下宏指令的宏展开是什么? shrot word ptr [bx],4,ror

解: shrot word ptr [bx],4,ror

1 push cx 1 mov cl,4

1 ror word ptr [bx],cl

1 pop cx

5.10、 定义一个宏logical,用它代表4条逻辑运算指令:and/or/xor/test,注意需 要利用3个形式参数,并给一个宏调用以及对应宏展开的例子。

解: logical macro lcode,dopd,sopd

lcode dopd,sopd endm

例如,如果使用“ and ax,[bx]指令,可以利用该宏定义,写出宏指令如下:

logical and,ax,[bx]

初看起来,这个问题似乎比较难解决。实际上,这 指令操作数格式,所以可以归纳为如上宏定义。

4条逻辑指令都具有相同的

5.11没有。。

5.12、编写一个宏指令move doprnd,soprnd它实现任意寻址方式的字量源操作 数送

到目的操作数,包括存储单元到存储单元的传送功能。 解:move MACRO doprnd,soprnd

push ax mov ax,soprnd mov doprnd,ax pop ax ENDM

5.13;

movstr strN, dstr,sstr

lea si, sstr lea di, dstr mov cx, strN

cld rep movsb endm

5.14;①ABSDIF Pl , P2, DISTANCE

1 push ax 1 mov ax,P1 1 sub ax,P2 1 cmp ax,0 1 jge ?? 0000 1 neg ax 1 ?? 0000

② ABSDIF [BX] , [SI], [DI]

答:1 push ax

1 mov ax,[bx] 1 sub ax,[si] 1 cmp ax,0 1 jge ?? 0000 1 neg ax 1 ?? 0000

1 mov [di],ax

1 pop ax

1 mov DISTANCE, ax 1 pop ax

5.15; wtemp =2 repeat 100 dw 0

dw wtemp wtemp =wtemp+2 endm

5.18; DOS21H MACRO callnum,calladdress mov ah,callnum

ifnb

mov dx,calladdress endif int 21h ENDM

5.22; 1.编写主程序,并进行汇编产生 OBJ模块; 2. 编写独立的子程序,也进行汇编产生 OBJ模块;

3. 分别编写主程序与子程序时,需要处理好共用变量、过程、逻辑段属性、参 数传递等问

题;

4. 利用连接程序将主程序模块和子程序模块连接起来,形成完整的可执行程序 5.28;;数

据段 table dw 2277,2138,1808,1709,1522,1356,1208,1139

;对应中音1 ~ 7和高音i的定时器记数值

;代码段

mov al,0b6h out 43h,al

aga in: mov ah,1

int 21h cmp al, ' 1' jb n ext

cmp al, ' 8' ja n ext sub al,30h

;设置定时器2工作方式

;等待按键

;判断是否为数字1?8

;1?8的ASCII码转换为二进制数

sub al,1

;再减1,将数字1?8变为0?7,以便查表

xor ah,ah shl ax,1 mov bx,ax

;记数值表是16位数据,无法采用xlat指令

;乘以 2

mov ax,table[bx] ;取出对应的记数值

out 42h,al

;设置定时器2的记数值

mov al,ah out 42h,al in al,61h

;打开扬声器声音

or al,03h out 61h,al jmp aga in

;使D1D0= PB1PB4 11b,其他位不变

;连续发声,直到按下另一个键

n ext: push ax

in al,61h and al,Ofch

;不是数字1?8,则关闭扬声器声音

;使 D1DB PB1PB4 00b,其他位不变

最新汇编语言程序设计(第四版)第5章【课后答案】

汇编语言程序设计【课后习题答案】第五章高级汇编语言程序设计第四版--囮裑爲檤5.1条件表达式中逻辑与“&&表示两者都为真,整个条件才为真,对于程序段:.if(X==5)&&(ax!=bx)incax.endif请
推荐度:
点击下载文档文档为doc格式
6wodi3rsoo5s23r4b01m9s4tl8lgrm00e7t
领取福利

微信扫码领取福利

微信扫码分享