欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【0513】汇编语言源程序组织

程序员文章站 2022-03-10 09:45:24
...

汇编语言源程序组织

汇编语言语句格式

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指向栈最底部的高一个字节地址,栈的第一个字地址是最底部的低一个字节地址。

相关标签: 汇编语言 汇编