数据,指令,栈安排
在代码段中安排自己的数据
assume cs:codde
code segment
dw 1,2,3,4,5,6,7,8
start: mov bx,0
mov ax,0
mov cx,0
addNumber: add ax,cs:[bx]
add bx,2
loop addNumber
mov ax,4C00H
int 21H
code ends
end start
exe 文件 系统在debug的时候 系统会分配内存
assume cs:code
code segment
dw 0123H,0456H,0789,0ABCH,0DEFH,DFEDDH,0CBAH,0987H ;如何看待内存 哪里是数据 哪里是指令 哪里是栈
dw 0,0,0,0,0,0,0,0 ;32个字节当作我们字节安排的栈空间
dw 0,0,0,0,0,0,0,0
start: mov ax,cs
mov ss,ax
mov sp,48
mov bx,0
mov cx,0
pushData: push cs:[bx]
add,bx,2
loop pushData
mov bx,0
mov cx,0
popData: pop cs:[bx]
add bx,2
loop popData
mov ax,4C00H
int 21H
code ends
en start
assume cs:code ds:data,ss:stack ;伪指令 告诉翻译软件 这里怎么翻译 哪里怎么翻译
data segment
dw 0123H,0456H,0789,0ABCH,0DEFH,DFEDDH,0CBAH,0987H
data ends
stack segment stack
dw 0,0,0,0,0,0,0,0 ;32个字节当作我们字节安排的栈空间
dw 0,0,0,0,0,0,0,0
stack ends
code segment
;占用了IP寄存器变化的范围 0~FFFFH 减少了指令的数量 start记录了可描述信息中
;对cs和IP 这两个寄存器进行设置
start: mov ax,stack
mov ss,ax
mov sp,32
mov ax,data
mov ds,ax
mov bx,0
mov cx,0
pushData: push ds:[bx]
add,bx,2
loop pushData
mov bx,0
mov cx,0
popData: pop ds:[bx]
add bx,2
loop popData
mov ax,4C00H
int 21H
code ends
en start
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start: mov ax,a
mov ds,ax
mov ax,c
mov es,ax
mov bx,0
mov cx,0
addNumber:push ds
mov dx,0
mov dl,ds:[bx]
mov ax,b
mov ds,ax
add dl,ds[bx]
mov es:[bx],dl
inc bx
pop ds
loop addNumber
mov ax,4C00H
int 21H
code ends
end start
assume cs:code ds:data,ss:stack ;伪指令 告诉翻译软件 这里怎么翻译 哪里怎么翻译
data segment
dw 1,2,3,4,5,6,7,8 ;编译的规则 内存的分配16的倍速 16,32,48
dw 1
data ends
stack segment stack
dw 0,0,0,0,0,0,0,0 ;32个字节当作我们字节安排的栈空间
dw 0,0,0,0,0,0,0,0
stack ends
code segment
;占用了IP寄存器变化的范围 0~FFFFH 减少了指令的数量 start记录了可描述信息中
;对cs和IP 这两个寄存器进行设置
start: mov ax,stack
mov ss,ax
mov sp,32
mov ax,data
mov ds,ax
mov bx,0
mov cx,0
pushData: push ds:[bx]
add,bx,2
loop pushData
mov bx,0
mov cx,0
popData: pop ds:[bx]
add bx,2
loop popData
mov ax,4C00H
int 21H
code ends
en start