|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 奥普瓯江 于 2019-1-19 01:26 编辑
(1)补全下面的程序,统计F000:0处32个字节中,大小在[32, 128]数据的个数。
这道题是求得闭区间32,至128中的数据个数,所谓闭区间就是大于等于和小于等于
在这个无符号的数值运算中,闭区间需要观察标志寄存器cf(借位)和zf(是否为零)
- mov ax, 0f000h
- mov ds, ax
-
- mov bx, 0
- mov dx, 0
- mov cx, 32
- s:
- mov al, [bx]
- cmp al, 32
- jna s0 ;如果cf是CY(1以借位)那就说明cmp前面的数小于32,或CF是CY(1以借位) 同时ZF是ZR(1等于零)前面的数与32相等,满足以上两个条件任何一个(小于等于)都产生跳转
- cmp al, 128
- ja so ;如果cf是CN(0无借位)那就说明cmp前面的数大于128,或CF是CN(0无借位) 同时ZF是NZ(0不等于零)前面的数与128相等,满足以上两个条件任何一个(大于等于)都产生跳转
- inc dx
- s0:
- inc bx
- loop s
复制代码
(2)补全下面的程序,统计F000:0处32个字节中,大小在(32, 128)数据的个数。
这道题是求得闭区间32,至128中的数据个数,所谓开区间就是大于和小于
- mov ax, 0f000h
- mov ds, ax
-
- mov bx, 0
- mov dx, 0
- mov cx, 32
- s:
- mov al, [bx]
- cmp al, 32
- jb s0 ;如果CF是CY(1以借位)那就说明cmp前面的数小于32,满足条件(小于32)跳转
- cmp al, 128
- jnb s0 ;如果CF是CN(0无借位)那就说明cmp前面的数大于128,满足条件(大于128)跳转
- inc dx
- s0:
- inc bx
- loop s
复制代码
他们中间的区别是一个只需要观察一个寄存器就可以得出结论一个需要观察两个寄存器,才能得到答案。 |
|