• 封装
    • dw:define word,定义字型数据
    • 数据也可以放在代码段,但是要定义程序的入口start(end通知了编译器程序的入口)
    • 数据逆序存放(栈段的使用) ```cpp assume cs:condesg codesg segment dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H ;data dw 0,0,0,0,0,0,0,0 ;stack

    start: mov ax,cs mov ss,ax mov sp,32 ;ss:sp(下一个位置) mov bx,0 mov cx,8 s: push cs:[bx] add bx,2 loop s mov bx,0 mov cx,8 s0:pop cs:[bx] add bx,2 loop s0

    1. mov ax,4c00h
    2. int 21h

    codesg ends
    end start

    1. - 分段
    2. ```cpp
    3. assume cs:code,ds:data,ss:stack ;assume对除了CS以外的其它段寄存器,仅仅只是关联了段名,以便在访问段内变量时程序可以知道用哪个段寄存器,并没有在程序加载时将段地址装入段寄存器
    4. data segment
    5. dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H;存放常量
    6. data ends
    7. stack segment
    8. dw 0,0,0,0,0,0,0,0
    9. stack ends
    10. code segment
    11. start: mov ax,stack
    12. mov ss,ax
    13. mov sp,16
    14. mov ax,data
    15. mov ds,ax ;ds:[bx]
    16. mov bx,0
    17. mov cx,8
    18. s:push [bx]
    19. add bx,2
    20. loop s
    21. mov ax,4c00h
    22. int 21h
    23. code ends
    24. end
    • 如何段中饿数据栈N个字节,则程序加载后这段实际占的空间时16x(N/16+1)(16位CPU)