汇编笔记_第六章


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)

猜你喜欢

转载自www.cnblogs.com/31415926535x/p/10182049.html