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

    技术2023-05-08  97

    汇编语言源程序组织

    汇编语言语句格式

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

    Processed: 0.018, SQL: 9