王爽汇编语言 关于直接定址表 cs:[bx] 指向标号,偏移地址是两个字节,那为什么ah是一个字节?

编写一个子程序,计算sin(x),并在屏幕中间显示计算结果:用ax向子程序传递角度,程序如下:showsin:jmpshortshowtabledwag0,ag30,ag... 编写一个子程序,计算sin(x) ,并在屏幕中间显示计算结果:
用ax向子程序传递角度,程序如下:
showsin: jmp short show

table dw ag0,ag30,ag60,ag90,ag120,ag150,ag180 ;字符串偏移地址表
ag0 db '0',0 ;sin(0)对应的字符串"0"
ag30 db '0.5',0 ; sin(30)对应的字符串"0.5"
ag60 db '0.866',0 ; sin(30)对应的字符串"0.866"
ag90 db '1',0 ; sin(30)对应的字符串"1"
ag120 db '0.866',0 ; sin(30)对应的字符串"0.866"
ag150 db '0.5',0 ; sin(30)对应的字符串"0.5"
ag180 db '0',0 ; sin(30)对应的字符串"0"
show: push bx
push es
push si
mov

mov bx,0b800h
mov es,bx

;以下用 角度值/30 作为相对table的偏移,取得对应的字符串的偏移地址,放在bx中
mov ah,0
mov bl,30 ;除以30 的原因是所求的角度以30度递增,得出的商刚好是:0,1,2,3,4,5,6-table
div bl ;加上相应商就可取得相应字符串偏移地址
mov bl,al
mov bh,0
add bx,bx ;作用:相当于(bx)=(bx)*2,因为table表中以dw定义数据为字型,占两个字节,所以
mov bx,table[bx] ;(bx)*2就可找到相应的存储字符串偏移地址的地址

;以下显示sin(x)对应的字符串
mov si,160*12+40*2
shows: mov ah,cs:[bx] // ?
cmp ah,0
je showret
mov es:[si],ah
inc bx
add si,2
jmp short shows
showret:pop si
pop es
pop bx
ret
展开
 我来答
匿名用户
2012-09-25
展开全部
ah本来就一个字节,ah+al才是一个字
上面最后的例子里只是取了bx的高位存到ah里,然后ah清0,其实就是把bx的范围缩小到-128-127而已.
小裙裙999
2012-09-25
知道答主
回答量:24
采纳率:0%
帮助的人:8.8万
展开全部
锋锐锐风电
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
达奥新型建材
2012-09-25
知道答主
回答量:6
采纳率:0%
帮助的人:3.5万
展开全部
对于这个我也不太懂得,去找些参考书吧
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式