跳转至

12.代码段、数据段、栈段、dup指令

  • 数据类型

  • BYTE:8位,即两位16进制数

    • 创建方式:db(define byte)
    • WORD:16位,即四位16进制数

    • 创建方式:dw

    • DWORD:32位,即八位16进制数

    • 创建方式:dd

    • QWORD:64位,即十六位16进制数

    • 创建方式:dq

在代码中创建代码段、数据段、栈段

assume cs:codesg,ds:data,ss:stack

data segment
    db 'hello world'
    dw 123H,456H,789H
    db 3 dup (1,2,3)
    db 3 dup ('abc','def')
data ends

stack segment
    db 10 dup (0)
stack ends

codesg segment
    start:
        mov ax,0
        mov bx,0
        int 21H
codesg ends
end start

数据段和栈段的编写方式和代码段是类似的,其中dup是指重复(duplicate),10 dup (0)​是指重复十次0,也就是10个0,

但是代码段为什么这次我们加了一个start标识呢,这是为了让编译器区分开代码和数据,否则代码会和数据混在一起,导致执行出错

QQ_1724549518696

我们可以发现数据都被放在了076A:0000处