东尼 发表于 2018-8-30 10:57:41

16.3 直接定址表中偏移量table[bx]的表示问题

16.3 直接定址表   例题一 以16进制的形式在屏幕中间显示给定的字节型数据

mov bl, ah
mov bh, 0
mov ah, table

我明白,上面这3条语句的意思是通过bx代表的table中的偏移量, 将对应的字符赋值给ah。但我不明白,为什么最后这句是 mov ah, table?我从第二句开始,就直接写成 mov ah, table, 这样不行吗?

Python.爱好者 发表于 2018-8-31 09:24:39

因为汇编中是不能用来寻址的,那么
00000000xxxxxxxx
   bh            bl
             bx
就用bx代替了bl

Python.爱好者 发表于 2018-8-31 09:26:40

table是一个标号,其实就是一个立即数
table相当于

东尼 发表于 2018-9-1 22:56:44

感谢 Python.爱好者 的帮助!你说的对,因为汇编中是不能用来寻址的。我还是对王爽书上讲过的,记忆地不够清楚,今天又翻了一下书,其实王爽书里已经解释的很清楚了:P162   8.1 bx、si、di 和 bp   (1) 在8086 cpu中,只有这4个寄存器可以用在"[...]"中来进行内存单元的寻址:bx、si、di 和 bp, 所以如果我从第二句开始,就直接写成 mov ah, table, 这样肯定是不行的。
页: [1]
查看完整版本: 16.3 直接定址表中偏移量table[bx]的表示问题