程序取得所需空间的两种方法:
1.在加载程序的时候为程序分配(讨论)——通过在源程序中顶一段
2.程序在执行的过程中向系统申请
--------------------------------------
实验五
(1)
assume 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: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
cpu执行程序,程序返回前,cs=0bae,ss=0bad,ds=0bac
=>cs=x,data=x-2,stack=x-1
-----------------------------------
实验五(5)
编写code,将a段和b段中的数据依次相加,将结果存到c中
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 dx,0
mov cx,8
s:mov ax,b
mov es,ax
mov al,ds:[bx]
mov ah,0
mov dx,ax
mov al,es:[bx]
add dx,ax
mov ax,c
mov es,ax
mov es:[bx],dx
add bx,1
loop s
mov ax,4c00h
int 21h
code ends
end start
感觉好长,不知道有没有办法短一点
-----------------------------------
-d 0bac:0 8
0BAC:0000 01 02 03 04 05 06 07 08-00 .........
-d 0bad:0 8
0BAD:0000 01 02 03 04 05 06 07 08-00 .........
-d 0bae:0 8
0BAE:0000 00 00 00 00 00 00 00 00-00 .........
-g 0028
AX=0BAE BX=0008 CX=0000 DX=0010 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BAC ES=0BAE SS=0BAC CS=0BAF IP=0028 NV UP EI PL NZ NA PO NC
0BAF:0028 B8004C MOV AX,4C00
-t
AX=4C00 BX=0008 CX=0000 DX=0010 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BAC ES=0BAE SS=0BAC CS=0BAF IP=002B NV UP EI PL NZ NA PO NC
0BAF:002B CD21 INT 21
-p
Program terminated normally
-d 0bae:0 8
0BAE:0000 02 04 06 08 0A 0C 0E 10-00 .........
------------------------------------------------------------
实验五(6)
编写code代码,用push指令将a段中的word数据,逆序存储到b段中
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start: mov ax,b
mov ss,ax
mov sp,16
mov ax,a
mov ds,ax
mov bx,0
mov cx,8
s:push ds:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start