从实模式到保护模式 习题6

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
习题
  1. 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


运行结果

  1. cx - 1 0 - 1 = 65535
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值