6.相同的功能,不同的代码
6.1
字 字节 si di rep cx cld std 减小
6.2
C E
6.3
data0 :0xf0, 0xff, 0x81
data1:0xffff,0x8a8a
6.4
(1) 1 1 0 1 0 0 0 0 0
(2)
mov ax,10
mov bx,1
cmp ax,bx
jg lbb
je lbz
jl lbl
lbb:add ax,bx
lbz:sub ax,bx
lbl:mul ax,bx
习题
-
data1 负数: 0xff, 0x80,0x97,0xf0
data2 负数:0xfff0,0xc5bc
mov ax,cs
mov ds,ax;设置数据段
mov ax,0b800h
mov es,ax;设置显存段
mov cx,6;循环次数
mov si,0;偏移量
mov dl,0;存正数个数
mov bx,data1;拿data1段汇编地址
s0:mov al,ds:[bx + si + 7c00h]
and ax,80h
cmp ax,0
jz zero0
jnz nonzero0
zero0:inc dl;是正数就自增
nonzero0:inc si
loop s0
mov bx,data3;将结果暂存到data3段
mov si,0
mov byte ds:[bx + si + 7c00h],dl;正数个数
inc si
mov al,6
sub al,dl
mov byte ds:[bx + si + 7c00h],al;负数个数
mov bx,data2;相同方法处理data2段
mov si,0
mov dl,0
mov cx,7
s1:mov ax,ds:[bx + si + 7c00h]
and ax,8000h
cmp ax,0
jz zero1
jnz nonzero1
zero1:inc dl
nonzero1:add si,2;注意字节型数据偏移量应该自增2
loop s1
mov bx,data3
mov si,2
mov byte ds:[bx + si + 7c00h],dl
inc si
mov al,7
sub al,dl
mov byte ds:[bx + si + 7c00h],al
mov cx,4
mov si,0;字符便宜量
mov di,0;实际显存偏移量
mov bx,data3
s:mov al,ds:[bx + si + 7c00h];显示出来
add al,'0'
mov di,si
add di,si
mov byte es:[di],al
mov al,04h
mov byte es:[di + 1],al
inc si
loop s
jmp $
data1 db 05h,0ffh,80h,0f0h,97h,30h
data2 dw 90h,0fff0h,0a0h,1235h,2fh,0c0h,0c5bch
data3 times 4 dw 0
times 510 - ($ - $$)db 0
db 55h,0aah
- cx - 1 0 - 1 = 65535