监测点9.1中的第二题的一个疑问
assume cs:codedata segment
dd 12345678H
data ends
code segment
start:mov ax, data
mov ds, ax
mov bx, 0
mov , bx ;低地址设置为ip = 0
mov , cs ;高地址设置为cs
jmp dword ptr ds:
code ends
end start
颜色部分,低地址应该存放的是IP的值,即偏移地址,为什么是0,我想应该是offset start啊,不应该把代码的偏移地址赋值到bx中吗,然后确赋值的是0,为什么肯定偏移地址是0呢? 自己顶自己,没人解答一下吗 我也是新手,不过,在code程序开始时,cs指向code. ip指向0。 就是指向的start啊。 个人认为,此处的为代码段的开始,即代码段的所在的字节数在start处时为0,后一句为 mov ax,为代码段的第一个字节。 offset start是偏移地址,值也是0,但是确实占的2个字节0000 (16进制表示) ,而ds是一个字节,就会出现不匹配的问题 一样的 sos2356 发表于 2021-2-15 01:01
offset start是偏移地址,值也是0,但是确实占的2个字节0000 (16进制表示) ,而ds是一个字节,就会出现不 ...
所以才有dx+2跳转嘛,应该两个都可以 数据段data 的dd开辟的这段内存空间不够16个字节但是系统会自动默认补足16个字节前面课程讲过所以每个段地址的开始ip都应该是0 不会是其它的 他要跳到第一条,而start编译后其实是一个地址,这个地址指的是第一条指令,也就是说他这个标号是第一条指令的偏移地址
页:
[1]