1、 1234567887654321h .code .startup mov cx,7 mov si,1 again: mov al, byte ptr qvarsi mov byte ptr qvarsi-1,al inc si loop again test al,80h jz ezz mov bl,0ffh jmp done ezz: mov bl,0 done: mov byte ptr qvar7,bl .exit 0 end习题4.2例题4.2如果要求算术左移7位,如何用移位指令实现。可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次, 次低位字节至最高位字节依次带 C
2、F 位循环左移一次(内循环共8次),外循环体控制执行7次即可。qvar mov dx, 7 ;外循环次数 mov ax, byte ptr qvar0最低位字节送axlpp: shl ax, 1最低位字节左移一次,其d7移入CF位 mov si, 1 mov cx, 7内循环次数again: rcl byte ptr qvarsi, 1高位字节依次左移 P50 inc si loop again dec dx jnz lpp .end习题4.3将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。设这四组从低位到高位分别放在AL、BL、CL和D
3、L寄存器中。仅列出代码段: mov bl, al将al中的两组分开 and al, 0fh屏蔽高四位后送al mov cl, 4原al中的数据逻辑右移4次送bl shr bl, cl mov dl, ah将ah中的两组分开 and dl, 0f0h屏蔽低高四位后送dl原ah中的数据逻辑右移4次送dl shr dl, cl mov cl, ah屏蔽高四位后送cl and cl, 0fh习题4.4编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。getkey:mov ah, 1从键盘输入,出口:al存键值 int 21h cmp al, a判键值是小写字母?jb getkayz ja s
4、ub al,20h是小写字母转换为大写字母 mov dl,al mov ah, 02h显示习题4.5已知用于LED数码管显示的代码表为:LEDtable DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h DB 80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示0 9、A F这16个数码的显示代码。现编写一个程序实现将lednum中的一个数字(0 9、A F)转换成对应的LED显示代码。 DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h DB 80h,90h,88h,83h,0c6h,0clh、86h,8ehl
5、ednum DB ? mov bx, offset LEDtable mov al, lednum xlatal中存有对应的LED显示代码.exit 0习题4.6编制一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。假设变量存放的是8位无符号数。bufx db ?bufYbufz mov al, bufX mov bl, bufY cmp al,bl ja next mov bufZ, bl jmp done next: mov bufZ, aldone:习题4.7设变量bufX为有符号16位数,请将它的符号状态保存在signX,即:如果X大于等于
6、0,保存0;如果X小于0,保存-1(ffh)。编写该程序。 .stackbufX dw -7signX cmp bufX,0 ;test bufX,80h jl nextjnz next mov signX,0next: mov signX,-1习题4.8bufX、bufY和bufZ是3个有符号16进制数,编写一个比较相等关系的程序:(1)如果这3个数都不相等,则显示0;(2)如果这3个数中有两个数相等,则显示1;(3)如果这3个数都相等,则显示2。 dw ? mov ax, bufX mov bx, bufY mov cx, bufZ mov dl, 0 cmp ax,bx jnz next
7、1 inc dlnext1: cmp ax,cx jnz next2next2: cmp bx,cx jnz next3next3: cmp dl,3 jb next4 mov dl,2next4: mov ah,02h习题4.9例题4.8内外循环次数共是多少?如果要求按从大到小排序,程序如何修改?外循环次数是: count-1次 (19次)内循环次数是: (count-1)!次 ( 19! 次)内外循环次数共是 count-1 + (count-1)!次 ,即 19+19!次习题4.10串操作指令常要利用循环结构,现在不用串操作指令实现字符串string1内容传送到字符串string2,字符长度为count。 .model small string1 db good morning! len = $-string1 string2 len dup(?) mov cx, len
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1