6.1在代码段中使用数据
dw 定义字型数据:define word
db 定义字节数据:define byte
assume cs:codesg
code segment
dw 0123h,0456h(偏移地址从0、2、4、6...)
start:mov bx,0
mov ax,0
mov cx,8
s:add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
在定义数据的时候,一定要指定程序的入口,否则cpu容易将数据混淆成指令。
end:除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。
利用栈实现逆序
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h....
dw 0,0,0....
start:mov ax,cs
mov ss,ax
mov sp,32
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
mov ax,4c00h
int 21h
codesg ends
end start
6.3将数据、代码、栈放入不同的代码段
时刻要记住8086(16位)中的段容量不能大于64KB(2^5)
assume cs:code,ds:data,ss:stack
data segment
...
data ends
stack segment
...
stack ends
code segment
...
code ends
data段使用
mov ax,data
mov ds,ax
data:[6]
dw 定义字型数据:define word
db 定义字节数据:define byte
assume cs:codesg
code segment
dw 0123h,0456h(偏移地址从0、2、4、6...)
start:mov bx,0
mov ax,0
mov cx,8
s:add ax,cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
在定义数据的时候,一定要指定程序的入口,否则cpu容易将数据混淆成指令。
end:除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。
利用栈实现逆序
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h....
dw 0,0,0....
start:mov ax,cs
mov ss,ax
mov sp,32
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
mov ax,4c00h
int 21h
codesg ends
end start
6.3将数据、代码、栈放入不同的代码段
时刻要记住8086(16位)中的段容量不能大于64KB(2^5)
assume cs:code,ds:data,ss:stack
data segment
...
data ends
stack segment
...
stack ends
code segment
...
code ends
data段使用
mov ax,data
mov ds,ax
data:[6]