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

微机原理与汇编语言程序设计课后习题参考答案

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

页眉 ADD AX,BX ...... RET SUBPR ENDS

若被另一代码段中的过程调用呢?

答:被同一代码段中的过程调用时,过程定义的结束语句中有错误,应改为SUBPR ENDP 若被另一代码段中的过程调用时,过程定义的开始和结束语句中都有错误,应改为: SUBPR PROC FAR PUSH AX ADD AX,BX ...... RET SUBPR ENDP

19.试编制程序,对NUM中各数分别统计出有多少个20,余下有多少个5,再余下有多少个2,再余下有多少个1。 统计的各数分别存放在NUM20,NUM5,NUM2,NUM1的对应位置中,程序要求用主程序子程序形式编制,而且用两种参量传递方法分别编制主程序和子程序)数据段如下:

DATA SEGMENT

NUM DW 0133H,005FH,1234H COUNT EQU ($-NUM)/TYPE NUM NUM20 DB COUNT DUP(0) NUM5 DB COUNT DUP(0) NUM2 DB COUNT DUP(0) NUM1 DB COUNT DUP(0) DATA ENDS 答:所求程序为: DATA SEGMENT

NUM DW 0133H,005FH,1234H COUNT EQU ($-NUM)/TYPE NUM NUM20 DB COUNT DUP(0) NUM5 DB COUNT DUP(0) NUM2 DB COUNT DUP(0) NUM1 DB COUNT DUP(0) DATA ENDS code segment

assume cs:code, ds:data start: mov ax, data mov ds, ax mov cx, const mov si, 0

lop: mov ax, num[si] div 20 mov bh, ah

mov num20[si], al

36 / 44

页眉 xor ax, ax mov al, bh div 5

mov bh, ah

mov num5[si], al xor ax, ax mov al, bh div 2

mov num1[si], ah mov num2[si], al add si, 2 loop lop mov ah, 4ch int 21h code ends

end start

*20.在数据区有一九九乘法表,(Line1~Line9),乘数和被乘数分别在Var1,Var2的字单元中。试编制一程序,用查表法求出乘积:Var1*Var2 。 第八章习题与参考答案

1.分别编制子程序,完成AAA,DAA,AAS,DAS的指令功能。 答:①完成AAA指令功能的子程序为: subprog segment push bx push cx push dx pushf pop bx

and bl,10h jnz lab1 and al,0fh cmp al,9 jle lab2 lab1: add al,6 inc ah pushf pop bx or bx,10h push bx popf

lab2:and al,0fh pushf pop bx mov dx,bx and dx,10h

37 / 44

mov cl,4 shr dx,cl and bx,0feh

or bx,dx

push bx popf pop dx pop cx pop bx ret subprog endp

②完成DAA指令功能的子程序为:subprog segment push bx push dx pushf pop bx

and bl,10h jnz lab1 mov bl,al and bl,0fh cmp bl,9 jle lab2 lab1: add al,6 pushf pop bx or bx,10h push bx popf lab2:jc lab3 mov bl,al and bl,0f0h cmp bl,90h jle lab4 lab3: add al,60h stc lab4: pop dx pop bx ret subprog endp

③完成AAS指令功能的子程序为:subprog segment push bx push cx

页眉 38 / 44

push dx pushf pop bx

and bl,10h jnz lab1 and al,0fh cmp al,9 jle lab2 lab1: sub al,6 dec ah pushf pop bx or bx,10h push bx popf

lab2:and al,0fh pushf pop bx mov dx,bx and dx,10h mov cl,4 shr dx,cl and bx,0feh

or bx,dx

push bx popf pop dx pop cx pop bx ret subprog endp

④完成DAS指令功能的子程序为:subprog segment push bx push dx pushf pop bx

and bl,10h jnz lab1 mov bl,al and bl,0fh cmp bl,9 jle lab2 lab1: sub al,6

页眉 39 / 44

页眉 pushf pop bx or bx,10h push bx popf lab2:jc lab3 mov bl,al and bl,0f0h cmp bl,90h jle lab4 lab3: sub al,60h stc lab4: pop dx pop bx ret subprog endp

2.试编制一程序,实现十个一位十进制数的累加,最后累加和以非压缩形式存放在AH(高位)和AL(低位)中。 答:所求程序为: dseg segment

data db 7,5,8,5,9,4,7,5,7,3 dseg ends code segment

assume cs:code,ds:dseg sta:mov ax,dseg mov ds,ax

mov si,offset data mov cx,10 mov ax,0 clc

lop:addc ax,[si] aaa

inc si loop lop mov ah,4ch int 21h code ends end sta

3.判断下列指令书写是否正确,如有错误,指出错在何处? (1)REP CMPSW (2)REPZ MOVSB (3)SCAS [DI] (4)STOS (5)LODSB (6)REP STOS [SI]

答:(1)REP CMPSW 错,CMPSW不能加前缀REP,只能和REPZ、REPNZ连用;

(2)REPZ MOVSB错,MOVSB不能加前缀REPZ,只能和REP连用 (3)SCAS [DI] 错,指令中未明确表明是字节操作还是字操作。

40 / 44

微机原理与汇编语言程序设计课后习题参考答案

页眉ADDAX,BX......RETSUBPRENDS若被另一代码段中的过程调用呢?答:被同一代码段中的过程调用时,过程定义的结束语句中有错误,应
推荐度:
点击下载文档文档为doc格式
1vk1h8h6wh77xpo5846y5ap1c1kzfj00qe2
领取福利

微信扫码领取福利

微信扫码分享