汇编语言程序设计(第四版)第4章_第1页
汇编语言程序设计(第四版)第4章_第2页
汇编语言程序设计(第四版)第4章_第3页
汇编语言程序设计(第四版)第4章_第4页
汇编语言程序设计(第四版)第4章_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言程序设计(第四版)第4章课后答案汇编语言程序设计第四版【课后习题答案】一暄I第4章基本汇编语言程序设计(习题4.1)例题4. 2如果要求算术右移8位,如何修改程序。(解答)思路:首先由最高位字节向次低位字节传送次低位字节向最低位字节传送(共7 次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位 字节。传送可参考例题4. 2,不过应从第一号字节送第零号字节,最高位字节向次低位字节传送:也可以用循环來完成:model small stack256 dataqvardq 1234567887654321h code startupmov ex, 7mov si

2、,1again:mov al, byte ptr qvarIsiJmov byte ptrqvarEsi!, alinc siloop againtest al,80hjz ezzmov bl,Offhjmp doneezz:mov bl, 0done:mov byteptr qvar7, bl exit 0end(习题4.2)例题4.2如果耍求算术左移7位,如何用移位指令实现。(解答)思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次, 次低位字节至最高位字节依次带CF位循环左移一次(内循环共8次),外循环体控制执 行7次即可。 model small stack 256

3、 dataqvar dq 1234567887654321h code startuplpp:shlax, 1移入CF位mov si, 1mov ex, 7again:rclbyte ptr qvarIsi, 1inc siloop againdec dxj:最低位字节左移一次,其d7:内循环次数;高位字节依次左移P50lpp exit 0 end(习题4.3)将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数 分别放在AL、BL、CL和DL寄存器中。(解答)思路:设这四组从低位到高位分别放在AL、BL、CL和DL寄存器中。仅列出代码段: mov bl, al;将al中的两组分开

4、and al, Ofh:屏蔽高四位后送almov cl,4;原al中的数据逻辑右移4次送blshr bl,clmov dl,ah:将ah中的两组分开and dl,OfOh屏蔽低高四位后送dlmov cl,4;原ah中的数据逻辑右移4次送dlshr dl,clmov cl,ah:屏蔽高四位后送cland cl, Ofh(习题4. 4)编写一个程序,把从键盘输入的一个小写字母用大写字母显示出來。(解答)getkey : mov aht 1:从键盘输入,出口 :沁存键值int 21hcmp al, cmp al, z:判键值是小写字母? ja getkayjb getkaysub al, 20h:是

5、小写字母转换为大写字母mov dl, almov ah, 02h:显不int 21h(习题4. 5)已知用f LED数码管显示的代码表为:DBLEDtable DB OcOh, 0f9h, 0a4h, ObOh, 99h, 92h, 82h, 0f8h 80h, 90h, 88h, 83h, 0c6h, Oclh, 86h, 8eh它依次表示0 9、A F这16个数码的显示代码。现编写一个程序实现将lednum 中的一个数字(0 9、A F)转换成对应的LED显示代码。(解答) model small stack 256 dataDB 80h,LEDtable DB OcOh, 0f9h, 0

6、a4h, ObOh, 99h, 92h, 82h, 0f8h90h, 88ht 83h, 0c6h, Oclh、 86h,8eh lednumDB ? code startupmov bx, offset LEDtablemov al, lednumxlatend:al中存有对应的LED显示代码 exit 0(习题4.6)编制一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。假设变量存放的是8位无符号数。1解答) model small stack 256 data bufxdb ? bufYdb ? bufzdb ? code startupmo

7、v al, bufXmovbl, bufYcmp al, bljanextmov bufZ, bljmpdonenext: mov bufZ, aldone: exit 0end(习题4.7)设变量bufX为有符号16位数,请将它的符号状态保存在signX.即: 如果X大于等于0,保存0;如果X小于0,保存-1 (ffh)。编写该程序。(解答) model small stackdb ? codecmp bufX, 0nextnex t: data bufXdw 一7 signX startup:test bufX, 80hmov signX, 0jmp donejl nextmov sign

8、X, 1 done: exit 0end(习题4. 8) bufX、bufY和bufZ是3个有符号16进制数,编写一个比较相等关系的 程序: (1)如果这3个数都不相等,则显示0;(2)如果这3个数中有两个数相等,则显示1:(3)如果这3个数都相等,则显示2。(解答) modelsmall stack256 data bufxdw ?dw ? bufzdw ? code startupmov ax,bufXmovbx, bufYmovex,bufZmov dl, Ocmp ax, bxjnznextlinc dlnextl:cmpax, exjnz next2incdlnext2:cmpbx,

9、 exjnz next3incdlnext3:cmpdl, 3jb next4movdl, 2,next4:movah, 02h;显示int 21h exit 0end(习题4. 9)例题4. 8内外循环次数共是多少?如果要求按从大到小排序,程序如何 修改?(解答)外循环次数是:count-1次(19次)内循环次数是:(count-1)!次(19!次)内外循环次数共是count_l + (count-l) !次,即19+19!次(习题4.10)串操作指令常要利用循环结构,现在不用串操作指令实现字符串 stringl内容传送到字符串string?,字符长度为counto(解答)stringldbgood morning!*len=$stringlstring2dblen dup(?) code startupmov ex, 源指针 silen;字符数mov di, offset string2:送一个字符mov si, offset stringl :目标指针 again:mov al,mov di, alinc si di:修改指针inc:修改指针model small stack 256 dataend(习题4.11)不用串操作指令求主存0040h : 0开始的一个64KB物理段中共有多少 个空格?(解答)这里仅列出主程序段:mov ax, 0040h:送段地址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论