几个很简单的问题,自己想不出来。
1:07D2H+10H 即 07E2H 是程序的地址。从07E2H开始,然后存放data段数据,stack段数据和code段数据。
data段数据空间是16B,stack占用空间是32B,由于编译器是从上往下编译的。然后07E2就是数据短的起始地址。stack段的起始地址就是07E2加上占用空间的16字节就是07E3了。所以07E3才是ss的段地址了!
红色字不理解,为什么07E2+16字节就万07E3了呢,07E2和07E3相差不是256个字节吗。
2:
程序代码:
assume cs:code,ss:stack,ds:data data segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h data ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] ;这的ds为什么省略的话会编译错误, ;我以前可以省略的呀。 ;push [0] ;默认段地址不是在DS里面吗,为什么前面还要在加一个ds呢。 push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h code ends end start