楚云天1989 发表于 2019-4-2 10:34:44

监测点9.1中的第二题的一个疑问

assume cs:code
data 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呢?

楚云天1989 发表于 2019-4-3 08:03:32

自己顶自己,没人解答一下吗

wzy199806 发表于 2019-4-21 17:52:05

我也是新手,不过,在code程序开始时,cs指向code. ip指向0。 就是指向的start啊。

噶哩噶哩先生 发表于 2019-5-23 10:07:30

个人认为,此处的为代码段的开始,即代码段的所在的字节数在start处时为0,后一句为 mov ax,为代码段的第一个字节。

sos2356 发表于 2021-2-15 01:01:32

offset start是偏移地址,值也是0,但是确实占的2个字节0000 (16进制表示) ,而ds是一个字节,就会出现不匹配的问题

YoonaLim 发表于 2021-8-13 10:48:43

一样的

YoonaLim 发表于 2021-8-13 10:49:37

sos2356 发表于 2021-2-15 01:01
offset start是偏移地址,值也是0,但是确实占的2个字节0000 (16进制表示) ,而ds是一个字节,就会出现不 ...

所以才有dx+2跳转嘛,应该两个都可以

萌新小花学编程 发表于 2022-10-12 15:57:03

数据段data 的dd开辟的这段内存空间不够16个字节但是系统会自动默认补足16个字节前面课程讲过所以每个段地址的开始ip都应该是0 不会是其它的

wsghr46 发表于 2022-11-19 23:13:53

他要跳到第一条,而start编译后其实是一个地址,这个地址指的是第一条指令,也就是说他这个标号是第一条指令的偏移地址
页: [1]
查看完整版本: 监测点9.1中的第二题的一个疑问