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

微机原理与接口技术课后习题答案(6)

来源:网络收集 时间:2018-12-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

space

again:

next:

done:

dword ? ; 代码段

mov esi,offset string xor ebx,ebx ;EBX用于记录空格数 mov al,[esi] cmp al,0 jz done cmp al,20h ;空格的ASCII码是20H jne next ;不相等、不是空格,转移 inc bx ;相等、是空格,空格个数加1 inc esi jmp again ;继续循环 mov space,ebx ;保存结果

〔习题4.14〕编写计算100个16位正整数之和的程序。如果和不超过16位字的范围(65535),则保存

其和到WORDSUM,如超过则显示‘Overflow !’。 〔解答〕

array wordsum error

again:

over:

〔习题4.15〕在一个已知长度的字符串中查找是否包含“BUG”子字符串。如果存在,显示“Y”,否则显示“N”。 〔解答〕

string count bug L1: LN:

; 数据段

byte 'If you find any error in the program, you can DEBUG it.' = sizeof string byte 'BUG' ; 代码段

mov ecx,count

mov edi,offset string mov esi,offset bug push edi

mov edx,sizeof bug mov al,[esi] cmp [edi],al

; 数据段

word 2005,2008,98 dup (1394) ; 假设100个16位正整数 word ?

byte 'Overflow !',0 ; 代码段 and ebx,0 mov ecx,100 xor ax,ax

add ax,array[ebx*2] jc over inc ebx loop again mov wordsum,ax

mov eax,offset error call dispmsg

- -26

L2: L3:

jne L2 inc esi inc edi dec edx jne LN pop edi mov al,'Y' jmp L3 pop edi inc edi loop L1 mov al,'N' call dispc

〔习题4.16〕主存中有一个8位压缩BCD码数据,保存在一个双字变量中。现在需要进行显示,但要求不显示前导0。由于位数较多,需要利用循环实现,但如何处理前导0和数据中间的0呢?不妨设置一个标记。编程实现。 〔解答〕 bcd

goon:

again:

disp:

next: done:

〔习题4.17〕已知一个字符串的长度,剔除其中所有的空格字符。请从字符串最后一个字符开始逐个向前判断、并进行处理。

〔解答〕 ; 数据段

string byte 'Let us have a try !',0dh,0ah,0 ; 代码段

; 数据段

dword 00371002h ; 代码段 mov esi,bcd cmp esi,0 jnz goon mov al,'0' call dispc jmp done mov ecx,8 xor ebx,ebx rol esi,4 mov eax,esi and eax,0fh cmp ebx,0 jnz disp cmp eax,0 jz next mov ebx,1 add al,30h call dispc loop again

; EBX=0,表示可能是前导0

; EAX低4位保存当前要显示的BCD码 ; EBX≠0,说明不是前导0,要显示 ; EBX=0,说明可能是前导0

; EAX=0,说明是前导0,不显示

; EAX≠0,没有前导0了,令EBX=1≠0

- -27

outlp:

inlp:

next:

done:

mov ecx,sizeof string cmp ecx,2 jb done

lea eax,string call dispmsg mov esi,ecx dec esi

cmp string[esi],' ' jnz next mov edi,esi dec ecx inc edi

mov al,string[edi] mov string[edi-1],al cmp edi,ecx jb inlp dec esi cmp esi,0 jnz outlp

lea eax,string call dispmsg

; 显示处理前的字符串

; 检测是否是空格 ; 不是空格继续循环

; 是空格,进入剔除空格分支

; 前移一个位置

; 继续进行

; 为0结束

; 显示处理后的字符串

〔习题4.18〕第3章习题3.14在屏幕上显示ASCII表,现仅在数据段设置表格缓冲区,编程将ASCII代码值填入留出位置的表格,然后调用显示功能实现(需要利用双重循环)。 〔解答〕

table

tab1

start:

again0:

again1:

include io32.inc .data

byte ' |0 1 2 3 4 5 6 7 8 9 A B C D E F',13,10 byte '---+-------------------------------',13,10 byte 6 dup(36 dup(?),13,10) byte 0 .code

mov ebx,offset tab1 mov edx,'| 02' mov ax,2020h mov esi,6 mov [ebx],edx add ebx,4 mov ecx,16

mov word ptr [ebx],ax add ebx,2 inc al

loop again1 add ebx,2 add edx,1

- -28

dec esi jnz again0

mov eax,offset table call dispmsg exit 0 end start

〔习题4.19〕请按如下说明编写子程序:

子程序功能:把用ASCII码表示的两位十进制数转换为压缩BCD码 入口参数:DH=十位数的ASCII码,DL=个位数的ASCII码 出口参数:AL=对应BCD码 〔解答〕 asctob

asctob

〔习题4.20〕乘法的非压缩BCD码调整指令AAM执行的操作是:AH←AL÷10的商,AL←AL÷10的余数。利用AAM可以实现将AL中的100内数据转换为ASCII码,程序如下:

xor ah,ah aam

add ax,3030h

利用这段程序,编写一个显示AL中数值(0~99)的子程序。

proc

xor ah,ah aam

add ax,3030h push ax mov al,ah call dispc pop ax call dispc ret endp proc shl dh,4 mov al,dh and dl,0fh or al,dl ret endp

〔解答〕 disp99

disp99

〔习题4.21〕编写一个源程序,在键盘上按一个键,将其返回的ASCII码值显示出来,如果按下ESC键(对应ASCII码是1BH)则程序退出。请调用书中的HTOASC子程序。 〔解答〕

again:

; 代码段,主程序 call readc cmp al,1bh jz done

- -29

done:

mov bl,al mov al,':' call dispc mov al,bl rol al,4 call htoasc call dispc mov al,bl call htoasc call dispc call dispcrlf jmp again

; 调用子程序 ; 显示一个字符 ; 调用子程序 ; 显示一个字符

〔习题4.22〕编写一个子程序,它以二进制形式显示EAX中32位数据,并设计一个主程序验证。 〔解答〕

dispbd

dbd:

dispbd

〔习题4.23〕将例题4-16的32位寄存器改用16位寄存器,仅实现输出-2~+2-1之间的数据。 〔解答〕 ; 数据段 array word 12345,-1234,32767,-32768,0,667 writebuf byte 6 dup(0) ; 代码段,主程序 mov ecx,lengthof array mov ebx,0 again:

mov ax,array[ebx*2] call write call dispcrlf

15

15

; 代码段,主程序 mov eax,8F98FF00H call dispbd

; 代码段,子程序 proc push ecx push edx mov ecx,32 rol eax,1 push eax and al,01h add al,30h call dispc pop eax loop dbd pop edx pop ecx ret endp

; 调用子程序

; 32位二进制数的输出

; 要输出的字符个数 ; AL循环左移一位 ; 取AL最低位

; 转化成相应的ASCLL码值 ; 以二进制的形式显示

- -30

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库微机原理与接口技术课后习题答案(6)在线全文阅读。

微机原理与接口技术课后习题答案(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/346184.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: