【0513】汇编语言源程序组织
汇编语言源程序组织
汇编语言语句格式
DATA SEGMENT
X DW 4-----按字存储,DB按字节存储
Y DW 5
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV BX, X
MOV AX, Y
ADD AX, BX
MOV CL, 3
SAL AX, CL
SUB AX, X
SAR AX, 1
MOV Z, AX
MOV AH, 4CH
INT 21H
CODE ENDS
END START
(1)指令语句格式
标号:指令助记符 操作数;注释
例:L1: ADD AL,BL ;寄存器内容相加
标号字段:任选,位于指令开头,以冒号结尾
变量:引用的是偏移量
(2)伪指令语句格式,功能通常是分配空间,计算表达式,定义常量等【不能生成机器指令代码】
符号名 伪指令符 操作数 ;注释
符号名字段:任选字段,不一定是变量,也可能是常量,表示地址
例:VAR DB 12H ;VAR是有效地址,地址里面的值是12H
VAR EQA 10,VAR是常量,不是变量
汇编语言使用的数据、变量与标号
变量,指某一个特定的内存单元,是具体的实在的。
三种固有属性:段属性,偏移量属性,类属性
(1)变量定义伪指令
语句格式:变量名 DB 表达式1,表达式2…
变量名是可选的,也可以直接 DB 表达式1,表达式2…
DD双字 DQ 8个字节
例子:
VAR DB 12H
VARA DD VAR;VAR是一个有效值,这里意思是把 段基值:有效值 存入VARA开始的4个字节,是地址,不是地址里面的值
MOV AX VAR;意思是把VAR地址里面的值存进AX里面,存的不是地址
(2)变量初值设置
表达式 dup(2) 表达式表示个数,2表示值【注意分开的数的话就会有逗号分隔,表达式和DUP没有逗号分隔】
(3)变量的引用
变量在指令语句中的引用时位移量,然后用存储器寻址方式取值;
变量在伪指令中的引用是段内偏移量或逻辑地址【针对取字操作】
表达式与运算符
伪指令
伪指令中的表达式直接计算结果作为内容
程序的段结构
汇编语言程序的基本结构框架
段基址是20bit,段基值是16bit
课堂题目:
NUM1,NUM3是段内偏移量
1.MOV AX, NUM3-NUM1
正确,NUM3-NUM1表示的是偏移量的差,不是内容之差,偏移量没有加法,把这个差值存入AX
2.MOV NUM1, AX+NUM3
错误,不能对寄存器名称进行这类操作【表达式中不能使用存储单元名称,包括寄存器、内存单元、端口,除了减法表达式】
堆栈段
堆栈为空时,SP指向栈最底部的高一个字节地址,栈的第一个字地址是最底部的低一个字节地址。
上一篇: linux软件通用吗
推荐阅读