哪位汇编高手指点下小弟offset的功能,最好能详细点,小弟感激不尽!~
发布网友
发布时间:2023-01-01 07:55
我来回答
共2个回答
热心网友
时间:2023-10-05 06:32
OFFSET 其实用起来很简单的,一般就是用来获得标号处相对于程序段其实位置的偏移地址。
MOV AX,OFFSET SUB,把SUB所在的偏移地址传送到AX中
JMP SUB1其实等同于 JMP OFFSET SUB1
总的来说OFFSET的功能就是去的标号所在的偏移地址,与其相对应的是标号SEG
SEG是取得标号所在的段地址
assume cs:code
table dw offset s,seg s ;这里用数据标号存放两个字,低位字存放S偏移地址,高位字存放S的段地址。下面用JMP 跳转到S处得标号
code segment
start:
jmp dword ptr table[0];段间转移
db 128 p (0)
s: mov ax,4c00h
int 21h
code ends
end start
热心网友
时间:2023-10-05 06:33
OFFSET是获取全局变量或标号的偏移地址,相对于起始位置的偏移
MOV AX,OFFSET STR ;STR是已经定义的变量
LEA AX,STR ;STR是已经定义的变量
两个指令功能相同,( 但OFFSET只能与简单的符号地址相连,而不能和诸如[SI+X]等复杂的地址表达式相连 ),OFFSET STR是伪指令,功能是取偏移地址,LEA是获取STR的指针赋给AX