第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2026/11/2 16:01:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

dec bx jnz lop1 mov ah, 4ch int 21h code ends

end start

15. 设数据段有两组无符号数据DA1和DA2。试编制一程序,对两组数据一一对应比较,分别统计DA1中大于、等于、小于DA2对应数据的个数。数据段的数据安排如下: DATA SEGMENT

DA1 DW ××,××,××,...... DA2 DW ××,××,××,......

COUT DB 0 ;存大于的个数 DB 0 ;存等于的个数 DB 0 ;存小于的个数 DATA ENDS 答:所求程序为: data segment

DA1 DW 7832h,65h,3a8bh,43dch,539h,39h,74h,128h,79h,4aah,0adh DA2 DW 785h,98h,78adh,238ah,539h,48h,49h,23dh,79h,4aah,289h const equ ($-da2)/type da2

COUT DB 0 ;存大于的个数 DB 0 ;存等于的个数 DB 0 ;存小于的个数 data ends code segment

assume cs:code, ds:data start: mov ax, data mov ds, ax lea si, da1 lea di, da2 mov cx, const lop: mov ax, [si] cmp ax, [di] jle lab1 inc cout jmp lab3 lab1: jl lab2 inc cout+1 jmp lab3 lab2: inc cout+2 lab3: add si, 2 add di, 2 loop lop mov ah, 4ch

int 21h code ends

end start

16. 重写第7题的程序, 改用一个子程序实现0.5秒的延时。

答:设延时0.5秒需执行X条LOOP指令, 则有:2X=400*1000000*0.5,X=100000000=10000*10000 所求程序为: data segment

var1 db '请输入一个不超过9的数:$' data ends code segment

assume cs:code, ds:data start: mov ax, data mov ds, ax

mov dx, offset var1 mov ah, 9 int 21h mov ah, 1 int 21h cmp al, 31h jl close cmp al, 39h jg close and ax, 0fh mov si, ax labm: call subp mov ah, 2 mov dl, 7 int 21h dec si jnz labm close:mov ah, 4ch int 21h subp proc

mov di, 10000 sup1: mov cx, 10000 sup2: loop sup2 dec di jnz sup1 ret subp endp code ends

end start

17. 重写第9题的程序, 改用一个子程序实现输入,一个子程序实现输出。

答:所求程序为: data segment

var1 db '请输入一串字符(不超过50个,遇回车结束):$' data ends

sta1 segment stack dw 50 dup (?) sta1 end code segment

assume cs:code, ds:data,ss:sta1 subp1 proc

mov si,0 mov cx, 50 sp11: mov ah, 1 int 21h cmp al, 0dh jz sp12 push ax inc si loop sp11 sp12: ret subp1 endp subp2 proc

mov cx, si sp21: pop bx mov dl, bl mov ah, 2 int 21h loop sp21 ret subp2 endp

start: mov ax, data mov ds, ax

mov dx, offset var1 mov ah, 9 int 21h call subp1 call subp2 mov ah, 4ch int 21h code ends

end start

18. 若下面的过程被同一代码段中的过程调用,请指出其中的错误。 SUBPR PROC

PUSH AX

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

微机原理与汇编语言程序设计课后习题参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c307dv5dbf547ty70k2c2_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top