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

《微机原理及接口技术》(第2版)—习题解答

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

mov ah,2 int 21h mov dl,?H?

;显示一个字母“H”

mov ah,2 int 21h pop dx pop cx ret

DIPASC endp HTOASC proc ;将AL低4位表达的一位16进制数转换为ASCII码 and al,0fh cmp al,9 jbe htoasc1 add al,37h ;是0AH~0FH,加37H转换为ASCII码 ret ;子程序返回 htoasc1: add al,30h ;是0~9,加30H转换为ASCII码 ret ;子程序返回 HTOASC

〔习题3.30〕

endp

写一个子程序,根据入口参数AL=0、1、2,依次实现对大写字母转换成小写、小写转换成大写或大小写字母互换。欲转换的字符串在string中,用0表示结束。 〔解答〕

lucase proc push bx mov bx,offset string cmp al,0 je case0 cmp al,1 jz case1 cmp al,2 jz case2 jmp done

case0: cmp byte ptr [bx],0 je done cmp byte ptr [bx],?A? jb next0

25

cmp byte ptr [bx],?Z? ja next0 add byte ptr [bx],20h next0: inc bx jmp case0

case1: cmp byte ptr [bx],0 je done cmp byte ptr [bx],?a? jb next1 cmp byte ptr [bx],?z? ja next1 sub byte ptr [bx],20h next1: inc bx jmp case1

case2: cmp byte ptr [bx],0 je done cmp byte ptr [bx],?A? jb next2 cmp byte ptr [bx],?Z? ja next20 add byte ptr [bx],20h jmp next2

next20: cmp byte ptr [bx],?a? jb next2 cmp byte ptr [bx],?z? ja next2 sub byte ptr [bx],20h next2: inc bx jmp case2 done: pop bx ret

lucase endp

〔习题3.31〕

子程序的参数传递有哪些方法,请简单比较。 〔解答〕

26

〔习题3.32〕

采用堆栈传递参数的一般方法是什么,为什么应该特别注意堆栈平衡问题。 〔解答〕

〔习题3.33〕

编写一个求32位数据补码的子程序,通过寄存器传递入口参数。 〔解答〕 方法1:

neg32 proc ;入口参数:DX.AX=32位有符号数 neg ax ;实现0-DX.AX功能

neg dx

sbb dx,0 ;这条指令也可以用dec dx代替

ret

neg32 endp ;出口参数:DX.AX=32位有符号数的补码 方法2:

neg32 proc ;入口参数:DX.AX=32位有符号数 not ax ;实现DX.AX求反加1 not dx add ax,1 adc dx,0 ret

neg32 endp ;出口参数:DX.AX=32位有符号数的补码

〔习题3.34〕

编写一个计算字节校验和的子程序。所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。主程序提供入口参数,有数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。传递参数方法自定。 〔解答〕

;数据段 array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h ;数组 count equ $-array ;数组元素个数 result db ? ;校验和 ;代码段 mov bx,offset array ;BX←数组的偏移地址 mov cx,count ;CX←数组的元素个数 call checksum ;调用求和过程

27

mov result,al ;处理出口参数

mov ax,4c00h int 21h

;计算字节校验和的通用过程

;入口参数:DS:BX=数组的段地址:偏移地址,CX=元素个数 ;出口参数:AL=校验和

;说明:除AX/BX/CX外,不影响其他寄存器

checksum proc xor al,al ;累加器清0 sum: add al,[bx] ;求和 inc bx ;指向下一个字节 loop sum ret checksum endp end

〔习题3.35〕

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

? 采用AX寄存器传递这个16位二进制数 ? 采用temp变量传递这个16位二进制数 ? 采用堆栈方法传递这个16位二进制数 〔解答〕

?

.model small .stack .data

wdata dw 34abh .code .startup mov ax,wdata call dispa .exit 0 ; dispa proc push cx push dx

28

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