skylove1233 发表于 2017-9-11 22:40:49

关于汇编语言数据段的定义

今天看到8.6节的时候,要把数据段的3行数据替换,本身的数据是从60的偏移地址开始的,所以在写程序的时候,要先定义数据段,但是DB定义的数据段默认是从0偏移地址开始的,请问这种情况下,我该怎么定义它本身的数据,我的程序如下:
assume cs:code,ds:data
data segment
db 'DEC'
db 'Ken Oslen'
db 89h
db 40h
db 'PDP'
data ends
code segment
start: mov ax,data
           mov ds,ax
           mov bx,60
           mov word ptr ,38
           mov word ptr ,70
          
           mov di,0
           mov byte ptr 10,'V'
           inc di
           mov byte ptr 10,'A'
           inc di
           mov byte ptr 10,'X'
          
           mov ax,4c00h
           int 21h
code ends
end start
          
我的程序结果是对的,但是一开始数据的存放地址错了,请问怎么改前面的DB代码?

3-3 发表于 2017-9-12 09:55:31

你是要自己定义数据段里面的值吗?DB是表示的数据的类型

skylove1233 发表于 2017-9-12 10:30:27

3-3 发表于 2017-9-12 09:55
你是要自己定义数据段里面的值吗?DB是表示的数据的类型

我是想要让我用DB定义的代码一开始就是从偏移地址60开始的,而不是从偏移地址0开始的

或者,换一种说法,如果DB不能实现,那么我怎么能够实现定义一堆偏移地址从60开始的数据?

3-3 发表于 2017-9-12 10:50:46

用一堆数据来填充前60个字节就好了。

data segment
db 60 dup(0)
db 'DEC'

……

是这个意思?

skylove1233 发表于 2017-9-12 12:13:03

3-3 发表于 2017-9-12 10:50
用一堆数据来填充前60个字节就好了。

data segment


嗯嗯呃 就是这样 我刚把这个学了
页: [1]
查看完整版本: 关于汇编语言数据段的定义