hackbs 发表于 2012-10-23 12:24:45

offset操作符问题、、求解

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

4绿竹漪漪4 发表于 2012-10-25 11:16:50

你是说为什么 mov cx,offset sb执行后,cx中是3么?
因为汇编代码全编译成 机器码,
mov ax,5这种指令占了三个位置
不同的指令有着不同的长度。

你可以在debug中进行查看。
其实offset sb,在机器码中,就对应着3了。这个是编译器帮我们弄好的。{:1_1:}
我的回答,希望对你有所帮助!

4绿竹漪漪4 发表于 2012-10-25 11:22:02

例如
assume cs:qq
qq segment
这些都是伪指令,是给make.exe看的,编译后不会占字节的。
make是个程序,它要有它的语法规则,
intel是CISC体系结构,所以指令是不等长的,有的指令点了三个字节,有的占了两个。指令比较多的。

RISC是精减指令系统,它的指令是等长的,可能所有的指令都是3个字节或6个字节,看具体工业设计了。:loveliness:

贫道来自南少林 发表于 2012-11-2 12:58:08

好像很厉害的样子
页: [1]
查看完整版本: offset操作符问题、、求解