鱼C论坛

 找回密码
 立即注册
查看: 3147|回复: 3

[汇编作业] 检测点11.3

[复制链接]
发表于 2019-1-19 01:26:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 奥普瓯江 于 2019-1-19 01:26 编辑

(1)补全下面的程序,统计F000:0处32个字节中,大小在[32, 128]数据的个数。
这道题是求得闭区间32,至128中的数据个数,所谓闭区间就是大于等于和小于等于
在这个无符号的数值运算中,闭区间需要观察标志寄存器cf(借位)和zf(是否为零)

  1. mov ax, 0f000h
  2.                 mov ds, ax
  3.                
  4.                 mov bx, 0
  5.                 mov dx, 0
  6.                 mov cx, 32
  7. s:
  8.                 mov al, [bx]
  9.                 cmp al, 32
  10.                 jna s0                ;如果cf是CY(1以借位)那就说明cmp前面的数小于32,或CF是CY(1以借位) 同时ZF是ZR(1等于零)前面的数与32相等,满足以上两个条件任何一个(小于等于)都产生跳转
  11.                 cmp al, 128
  12.                 ja so                  ;如果cf是CN(0无借位)那就说明cmp前面的数大于128,或CF是CN(0无借位) 同时ZF是NZ(0不等于零)前面的数与128相等,满足以上两个条件任何一个(大于等于)都产生跳转
  13.                 inc dx
  14. s0:
  15.                 inc bx
  16.                 loop s
复制代码


(2)补全下面的程序,统计F000:0处32个字节中,大小在(32, 128)数据的个数。
这道题是求得闭区间32,至128中的数据个数,所谓开区间就是大于和小于
  1. mov ax, 0f000h
  2.                 mov ds, ax
  3.                
  4.                 mov bx, 0
  5.                 mov dx, 0
  6.                 mov cx, 32
  7. s:
  8.                 mov al, [bx]
  9.                 cmp al, 32
  10.                 jb s0   ;如果CF是CY(1以借位)那就说明cmp前面的数小于32,满足条件(小于32)跳转
  11.                 cmp al, 128
  12.                 jnb s0 ;如果CF是CN(0无借位)那就说明cmp前面的数大于128,满足条件(大于128)跳转
  13.                 inc dx
  14. s0:
  15.                 inc bx
  16.                 loop s
复制代码



他们中间的区别是一个只需要观察一个寄存器就可以得出结论一个需要观察两个寄存器,才能得到答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-9 11:30:24 | 显示全部楼层
第一个的jna和第二个的jb对换下才对,不然第一个程序等于32没算进去但是等于128的算进去了,第二个程序也是这样算了32没算128,刚学到这,查了网上意思都模糊,总觉得这两道题很奇怪,没想到还真被我蒙对了,还是你这写的清楚,理解了【】和()的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-9 11:31:44 | 显示全部楼层
楼主你好,我对你的答案有点疑问,第一题是闭区间,那么跳转条件就不应该包含边界的,而jna指令当数据等于128时也会跳转的,同理第二题是开环,那么跳转条件就应该包含边界的,而jb指令当数据等于32时是不会跳转。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-19 21:36:06 | 显示全部楼层
本帖最后由 sbx 于 2020-8-19 21:37 编辑

;(2)补全下面的程序,统计f000:0处32个字节中,大小在(32,128)的数据的个数,不含两端数据。
mov ax,0f000h
mov ds,ax

mov bx,0
mov ds,0
mov cx,32

s:mov al,[bx]
cmp al,32
jna s0
cmp al,128
jnb s0
inc dx
s0:inc bx
loop s0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 15:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表