汇编中标号前面有加offset 和没加offset是不是没有区别的debug时看mov ax,offset tst和mov ax,tst发现ax的
发布网友
发布时间:2022-04-26 06:10
我来回答
共2个回答
热心网友
时间:2023-10-08 16:50
首先,有区别!但是得分开来说。事实上这个问题的关键不在offset ,而在offset后面跟的标号是段还是段内。
;offset 的作用举例
;offset 加与不加有区别吗
;分几种情况,dataseg标号,start:加冒号的标号,变量标号
assume ds:dataseg
dataseg segment
bianliang dw 1234h ;变量标号,包含段地址和偏移地址
dataseg ends ;dataseg标号,包含段地址和本段代码长度信息
codeseg segment
dw 0ffffh
start: ;带冒号的标号,包含段地址和偏移地址
mov ax,dataseg ;得到的是段地址
mov ax,offset dataseg ;得到的是本段代码长度
mov ax,start ;得到的是偏移地址
mov ax,offset start ;得到的是偏移地址
mov ax,bianliang ;得到的是内存地址中的内容
mov ax,offset bianliang ;得到的是偏移地址
mov ax,seg bianliang ;得到的是段地址
mov ax,seg start ;并且是不取自当前段寄存器的值的,正确的段地址
mov ax,seg dataseg ;同样是段地址
mov ax,4c00h
int 21h
codeseg ends
end start
热心网友
时间:2023-10-08 16:50
偏移量属性操作符(OFFSET)返回该标识符离它所在段的段地址有多少字节。
一般mov ax,tst是把tst变量的值送到AX中,或把TST段的段地址送到AX中,
而MOV AX,OFFSET TST 是把TST所在段的偏移量送到AX中。