微机原理与接口技术(钱晓捷版)课后习题答案

2026/4/29 4:18:19

jnz again

mov eax,offset msg2 call dispmsg

mov edx,offset array mov ecx,count next:

mov eax,[edx] call dispuid call dispcrlf add edx,4 dec ecx jnz next ; 代码段,子程序 read proc

push eax push ecx push ebx push edx

read0:

mov eax,offset readbuf call readmsg test eax,eax jz readerr cmp eax,12

ja readerr

mov edx,offset readbuf xor ebx,ebx xor ecx,ecx mov al,[edx] cmp al,'+' jz read1 cmp al,'-' jnz read2 jmp readerr read1: inc edx mov al,[edx] test al,al

jz read3 ;如果为0,则说明该字符串已结束 read2:

cmp al,'0' jb readerr cmp al,'9'

ja readerr

sub al,30h

imul ebx,10 ;ebx用来存储处理过的数据 jc readerr movzx eax,al add ebx,eax jnc read1

readerr:

mov eax,offset errmsg call dispmsg jmp read0 read3:

mov temp,ebx pop edx pop ebx pop ecx pop eax ret read endp

〔习题4.25〕

编写一个计算字节校验和的子程序。所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。主程序提供入口参数,有数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。 〔解答〕 ; 计算字节校验和的通用过程 ; 入口参数:DS:EBX=数组的段地址:偏移地址,ECX=元素个数

; 出口参数:AL=校验和

; 说明:除EAX/EBX/ECX外,不影响其他寄存器

checksum proc xor al,al ; 累加器清0 sum: add al,[ebx] ; 求和

inc ebx ; 指向下一个字节 loop sum

endp

ret checksum

〔习题4.26〕

编制3个子程序把一个32位二进制数用8位十六进制形式在屏幕上显示出来,分别运用如下3种参数传递方法,并配合3个主程序验证它。

(1)采用EAX寄存器传递这个32位二进制数 (2)采用temp变量传递这个32位二进制数 (3)采用堆栈方法传递这个32位二进制数 〔解答〕

(1) ; 数据段 wvar word 307281AFH

; 代码段,主程序 mov eax,wvar call disp mov al,'H' call dispc

; 代码段,子程序 disp proc

push ebx push ecx mov ecx,8 mov ebx,eax

and al,0fh ; 转换为ASCII码 add al,30h cmp al,'9' jbe dhw2

; 8位

rol eax,4

dhw1:

add al,7

dhw2: call dispc mov eax,ebx

loop dhw1 pop ecx

pop ebx ret disp endp

(2) ; 数据段

wvar word 307281AFH temp word ? ; 代码段,主程序

mov eax,wvar mov temp,eax call disp mov al,'H' call dispc

; 代码段,子程序

proc push ebx push ecx

mov ecx,8 ; 8位 mov eax,temp

disp

dhw1: rol eax,4 mov ebx,eax and al,0fh ; 转换为ASCII码

add al,30h

cmp al,'9' jbe dhw2 add al,7

dhw2: call dispc ; 显示一个字符

mov eax,ebx loop dhw1 pop ecx pop ebx ret

endp

disp (3)

; 数据段 wvar word 307281AFH

; 代码段,主程序 push wvar call disp add esp,4 mov al,'H' call dispc

; 代码段,子程序

disp proc push ebp mov ebp,esp push ebx

push ecx mov ecx,8

; 8位

mov eax,[ebp+8] dhw1: rol eax,4 mov ebx,eax

and al,0fh ; 转换为ASCII码 add al,30h cmp al,'9' jbe dhw2

add al,7

dhw2: call dispc

mov eax,ebx loop dhw1 pop ecx pop ebx pop ebp

ret disp endp 〔习题4.27〕


微机原理与接口技术(钱晓捷版)课后习题答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 微机原理与接口技术(钱晓捷版)课后习题答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

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

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