阳光下冰淇淋 发表于 2012-12-7 14:09:19

王爽汇编5.3 5.5的疑问 急!

本帖最后由 阳光下冰淇淋 于 2012-12-7 14:40 编辑

程序5.3中
mov bx,6
mov al,

不可以直接写成:mov al,
为什么可以写成:mov al,bs:



lukelqz 发表于 2012-12-7 14:41:31

完全可以哇,都是将DS:0006内存处存储的的字节值赋给al

上面是调试图。

可以看一下王爽的书P164 有寻址方式的总结

Black_F.c 发表于 2012-12-7 15:10:09

Bs?。。。。有这个语法么

Black_F.c 发表于 2012-12-7 15:10:56

用MASM不可以直接,可以ds:

以学为乐 发表于 2012-12-7 15:56:23

DEBUG中和masm源程序中对这个指令处理是不一样的,DEBUG中可以直接用MOV ,AL,],而masm源程序中,必须前加段前缀,所以写成mov al,ds:

Captain_Jack 发表于 2012-12-8 11:16:31

书上不是有么……debug和编译器对指令处理不同,详见5.4
编译器将解释为idata

shdfsbgfjks 发表于 2012-12-8 13:26:09

编译的时候编译器不认识【】只是把6移动到al中,在前边加上段名编译器就能认识了,也可以通过bx过度一下

独自一人 发表于 2012-12-8 16:36:52

其实书里都有介绍的,而且小甲鱼老师也在视频里上鸡实验过
masm编译器会把当做6来看待,所以要通过添加段前缀来说明
如 mov ax,ds: 这样masm才懂段地址是ds,偏移是6
当然如果偏移地址是0的话,可以不用添加段前缀,直接 mov ax,,这样也行。
还有8086段寄存器好像没有bs吧:lol
页: [1]
查看完整版本: 王爽汇编5.3 5.5的疑问 急!