鱼C论坛

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

offset操作符问题、、求解

[复制链接]
发表于 2012-10-23 12:24:45 | 显示全部楼层 |阅读模式

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

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

x
assume cs:qq
qq segment
mov ax,5
sb:
mov bx,ax
mov cx,offset sb
s1:
add ax,10
loop s1
mov ax,4c00h
int 21h
qq ends
end
上面的cx,他的值就是3了,因为sb所在的偏移地址是3,mov ax,5这句占了3个地址,即0,1,2

为什么占用了3个地址 而且是0,1,2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-10-25 11:16:50 | 显示全部楼层
你是说为什么 mov cx,offset sb执行后,cx中是3么?
因为汇编代码全编译成 机器码,
mov ax,5这种指令占了三个位置
不同的指令有着不同的长度。

你可以在debug中进行查看。
其实offset sb,在机器码中,就对应着3了。这个是编译器帮我们弄好的。{:1_1:}
我的回答,希望对你有所帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-10-25 11:22:02 | 显示全部楼层
例如
assume cs:qq
qq segment
这些都是伪指令,是给make.exe看的,编译后不会占字节的。
make是个程序,它要有它的语法规则,
intel是CISC体系结构,所以指令是不等长的,有的指令点了三个字节,有的占了两个。指令比较多的。

RISC是精减指令系统,它的指令是等长的,可能所有的指令都是3个字节或6个字节,看具体工业设计了。:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-2 12:58:08 | 显示全部楼层
好像很厉害的样子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 13:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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