8086汇编(15)包含多个段的程序

1、在代码段中存放数据

  • 计算1122h、3344h、5566h的和,结果存放在ax中


    1.png
  • dw(define word)
    使用dw定义了3个字型数据,数据之间用逗号隔开
    类似的还有db(define byte)、dd(define double word)

  • start和end start是对应的,end start标记程序的执行入口

2、在代码段中使用栈

  • 假设代码中有数据1122h、3344h、5566h、7788h、99aah、0aabbh,利用栈将它们逆序存放


    2.png

3、包含多个段的程序

  • 如果将代码、数据、栈都放到一个段里面
    会显得混乱,编程时要随时注意何处是数据、何处是栈、何处是代码
    一个段的大小<=64KB,这样就会让数据、代码、栈的大小受到极大的限制

  • 所以,一般会考虑使用多个段来存放数据、代码、栈

3.png

4、给数据起标号

4.png

5、打印Hello World

5.png
assume cs:code, ds:data

; 数据段
data segment
    db 40, 41, 42, 64, 'Hello World!$' 
data ends

; 代码段
code segment   
start:    
    ; 设置ds的值
    mov ax, data
    mov ds, ax  
    
    ; 打印字符串 
    mov dx, 0h
    mov ah, 9h
    int 21h

    ; 退出程序
    mov ax, 4c00h
    int 21h
code ends  

end start
assume cs:code, ds:data, ss:stack

; 栈段
stack segment   
    db 10 dup(8)
stack ends 

; 数据段
data segment   
    db 20 dup(9)
data ends 

; 代码段
code segment
start: 
    ; 手动设置ss和ds
    mov ax, stack
    mov ss, ax   
    mov ax, data
    mov ds, ax

    mov ax, 1122h
    mov bx, 3344h  
    
    mov [0], ax
    
    ; 使用栈
    mov sp, 10 
    push ax
    push bx
    pop ax
    pop bx
    
    
    ; 退出
    mov ax, 4c00h
    int 21h   
code ends

end start

你可能感兴趣的:(8086汇编(15)包含多个段的程序)