当前位置:网站首页>第六章-包含多个段的程序

第六章-包含多个段的程序

2022-06-12 08:42:00 皮卡乒的皮卡乓

6.1 在代码段中使用数据

dw即define word,定义字型数据,数据用逗号分隔。

dw 数据

定义的数据在代码段,偏移地址为0,2,4.。。。。即:cs:0,cs:2…

assume cs:code
code segment
	dw 0123h,0456h,0789h,0abcH,0defh,0fedh,0cbah,0987h
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

6.2 在代码段中使用栈

assume cs:code
code segment

	dw 0123h,0456h,0789h,0abcH,0defh,0fedh,0cbah,0987h
	dw 0,0,0,0,0,0,0,0

start:
	mov ax, cs
	mov ss, ax
	mov sp, 32
	mov bx, 0
	mov cx, 8
s:	push cs:[0]
	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
	
code ends
end start

6.3将数据、代码、栈放入不同的段

assmue cs:code,ds:data,ss:stack

data segment
	dw 0123h,0456h,0789h,0abcH,0defh,0fedh,0cbah,0987h
data ends


stack segment
	dw 0,0,0,0,0,0,0,0
stack ends

code segment
start: 
	start:
	mov ax, stack
	mov ss, ax
	mov sp, 16        ;设置栈顶ss:sp指向stack:16
	mov ax, data
	mov ds, ax		  ;希望用ds:bx访问data段中的内容;ds指向data段
	mov bx, 0		  ;ds:bx指向data段中的第一个单元
	mov cx, 8
s:	push cs:[0]
	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
code ends
end start
原网站

版权声明
本文为[皮卡乒的皮卡乓]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_49682076/article/details/125125409