云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 微机原理与汇编语言程序设计课后习题参考答案

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

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 23:10:31

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

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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 ;存等于的个数

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com