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

2026/1/27 14:11:12

mov ah, 2 int 21h loop lab3 mov ah, 4ch int 21h code ends

end start

10. 从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类的计数结果。 答:所求程序为: data segment

var1 db '请输入一串字符(不超过50个,遇回车结束):$' alpha dw ? number dw ? other dw 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 cx, 50 lOP1: mov ah, 1 int 21h cmp al, 0dh jz close cmp al, 30h jl lab4 cmp al, 39h Jg lab2 inc number jmp lab5 lab2: cmp al, 41h jl lab4 cmp al, 5ah jg lab3 inc alpha jmp lab5 lab3: cmp al, 61h jl lab4 cmp al, 7ah jg lab4

inc alpha jmp lab5 lab4: inc other lab5: loop lOP1 close: mov ah, 4ch int 21h code ends

end start

11. 设平面上有一点P的直角坐标(X,Y),试编制完成以下操作的程序: (1)如P点落在第i(i=1,2,3,4)象限,则将i送quadrant单元; (2)如P点落在坐标轴上,则将0送quadrant单元。 答:所求程序为: data segment X dw -45 Y dw 82

quadrant dw ? data ends code segment

assume cs:code, ds:data start: mov ax, data mov ds, ax xor ax, ax cmp ax, x jz axis cmp ax, y jz axis cmp x, ax jl qua2_3 cmp y, ax jl qua4

mov quadrant, 1 jmp close

qua4: mov quadrant, 4 jmp close qua2_3: cmp y, ax jl qua3

mov quadrant, 2 jmp close

qua3: mov quadrant, 3 jmp close

axis: mov quadrant, 0 close: mov ah, 4ch int 21h code ends

end start

12.数据区中三个字节单元VAR1、VAR2及VAR3本应存放彼此相等的代码,现有一单元存错了代码。试编一程序,找出存错代码的单元,并将错误代码送入ERRO单元中,存放错误代码单元的偏移量送ADDR单元中。 答:所求程序为: data segment var1 db 74h var2 db 75h var3 db 74h erro db ? addr dw ? data ends code segment

assume cs:code, ds:data start: mov ax, data mov ds, ax lea bx, addr mov al, var1 cmp al, var2 jz lab3

cmp al, var3 jz lab2

mov ah, var1 mov erro, ah

mov [bx], offset var1 jmp close lab2: mov ah, var2 mov erro, ah

mov [bx], offset var2 jmp close lab3: mov ah, var3 mov erro, ah

mov [bx], offset var3 close: mov ah, 4ch int 21h code ends

end start

13. 试编一程序,统计出某数组中相邻两数间符号变化的次数。 答:所求程序为: data segment

array dw 74h,-28,32,-789h,456h,28h,795,-84h,-541h,48,-50 const equ ($-array)/type array -1 count db 0 data ends

code segment

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

lop: mov ax, [bx+si] and ax, 8000h mov dx, [bx+si+2] and dx, 8000h cmp ax, dx jz lab1 inc count lab1: add si, 2 loop lop mov ah, 4ch int 21h code ends

end start

14. 设某数据段已有N个学生的某科成绩,并按学号的次序存放在以STUDENT为首址各字单元的低字节中。现在要求按成绩的高低计算出名次,并把名次填入成绩所在字单元的高字节中,成绩相同者名次相同。试编制一程序实现上述要求。 答:所求程序为: data segment

student dw 74,82,52,67,76,82,74,74,87,95,92,78,61,78,65,72,73,75 const equ ($-array)/type student data ends code segment

assume cs:code, ds:data start: mov ax, data mov ds, ax mov bx, const lea si, student lop1: mov ax, [si] lea di, student mov cx, const lop2: cmp al, byte ptr [di] jge lab1

inc byte ptr [si+1] lab1: add di, 2 loop lop2 add si, 2

inc byte ptr [si+1]


微机原理与汇编语言程序设计课后习题参考答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 微机原理与汇编语言程序设计课后习题参考答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219