资源描述:
《第四章习地的题目解答》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。〔解答〕假设ax=1011010011111101思路:设这四组从低位到高位分别放在AL、BL、CL和DL寄存器中。仅列出代码段: movbl,al ;将al中的两组分开 andal,0fh ;屏蔽高四位后送al:1101 movcl,4 ;原al中的数据逻辑右移4次送bl shrbl,cl;b
2、l内容:1111 movdl,ah ;将ah中的两组分开 anddl,0f0h ;屏蔽低高四位后送dl movcl,4 ;原ah中的数据逻辑右移4次送dl shrdl,cl;dl:1011 movcl,ah ;屏蔽高四位后送cl:0100 andcl,0fh〔习题4.4〕编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。〔解答〕getkey:
3、 movah,1 ;从键盘输入,出口:al存键值 int21h cmp al,'a' ;判键值是小写字母? jb getkay cmp al,'z' ja getkay subal,20h ;是小写字母转换为大写字母 movdl,al movah,02h ;显示 int21h〔习题4.5〕已知用于LED数码管显示的代
4、码表为:LEDtable DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h DB80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示0~9、A~F这16个数码的显示代码。现编写一个程序实现将lednum中的一个数字(0~9、A~F)转换成对应的LED显示代码。〔解答〕 .modelsmall .stack256 .dataLEDtable DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
5、 DB80h,90h,88h,83h,0c6h,0clh、86h,8eh lednum DB? .code .startup movbx,offsetLEDtable moval,lednum精彩文档实用标准文案 xlat ;al中存有对应的LED显示代码 .exit0 end〔习题4.10〕设变量bufX为有符号16位数,请将它的符号状态保存在signX,即:如果X大于等于0,保存0;如果X小于0
6、,保存-1(ffh)。编写该程序。〔解答〕 .modelsmall .stack .databufX dw-7signX db? .code .startup cmpbufX,0 ;testbufX,80h jlnext ;jnznext movsignX,0 jmpdonenext: movsignX,-1done: .exit0
7、 end〔习题4.11〕bufX、bufY和bufZ是3个有符号16进制数,编写一个比较相等关系的程序:(1)如果这3个数都不相等,则显示0;(2)如果这3个数中有两个数相等,则显示1;(3)如果这3个数都相等,则显示2。〔解答〕 .modelsmall .stack256 .databufx dw?bufY dw? bufz dw? .code .startup movax, bufX ;