彙編筆記_第六章
阿新 • • 發佈:2018-12-26
title: 彙編筆記_第六章
date: 2018-12-26 17:44:59
tags:
- 筆記
categories: 組合語言
包含多個段的程式
在程式碼段中使用資料
先看程式:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0fedh,0cbah,0987h
start:
mov bx,0
mov ax,0
mov cx,8
s:
add ax,cx:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
- dw 的含義是定義字型資料;
- 程式的第一條指令前加了標號start,這個標號又在end後出現,這樣end除了可以同值編譯器結束程式外,還可以通知編譯器的入口在哪裡,即,若要CPU從何處卡是執行程式,只要在源程式中用
end 標號
指明就行;
所以程式的框架可以為:
assume cs:code
cdoe segment
...
資料
...
start:
...
程式碼
...
code ends
end start
將資料、程式碼、棧放入不同的段
- 放到一個段中使得程式很混亂
- 當處理的資料、棧、程式碼需要的空間超過64KB時,就不能放在一個段中;
偽指令;
assume cs:code,ds:data,ss:stack ... mov ax,stack mov ss,ax mov ax,data mov ds,ax
ss:sp就指向stack:16,CPU把stack段當棧空間用;
把資料段、堆疊段放在程式碼段前,其對應的段地址是x-1、x-2
放在後面緊跟程式碼段後面(貌似)
(end)