第四章:汇编语言程序格式

发布时间:2024-11-04

第四章4.1

汇编语言程序格式

汇编程序功能

编辑程序

PROGRAM.ASM

汇编程序

PROGRAM.OBJ

连接程序PROGRAM.EXE

4.2

伪操作

伪操作是汇编程序对源程序进行汇编时处理的操作,完 成数据定义、分配存储区、指示程序开始结束等功能。 数据定义及存储器分配伪操作 格式:[变量] 助记符 操作数 [ , 操作数 , … ] [ ; 注释] 助记符:DB DW DD DQ DT

DATA_WORD DATA_BYTE MESS1 MESS2

DW DB DB DW

100, 100H 100 DUP (?) ‘AB’ ‘AB’

MESS1 A

B MESS2 B

A 2

例: OPER1 DB ?, ? OPER2 DW ?, ? … MOV OPER1, 0 ; 字节指令 MOV OPER2, 0 ; 字指令例: OPER1 DB 1, 2 OPER2 DW 1234H, 5678H … MOV AX, OPER1+1 × MOV AL, OPER2 × 类型不匹配 MOV AX, WORD PTR OPER1+1 MOV AL, BYTE PTR OPER2

OPER1 OPER2

01 02 34 12 78 56

(AX)=3402H

(AL)=34H

变量和标号:所有的变量和标号都有三种属性

段值(SEG)偏移量(OFFSET) 类型(TYPE):变量(字节/字/双字/四字/十字节)

标号(NEAR / FAR)例: BYTE_ARRAY LABEL BYTEWORD_ARRAY DW 50 DUP (?)BYTE_ARRAY WORD_ARRAY

表达式赋值伪操作EQU(不占存储单元) 格式:表达式名 EQU 表达式 CONSTANT EQU 256 ALPHA EQU 7 BETA EQU ALPHA-2

“=”伪操作 (允许重复定义) 格式:变量=表达式 … EMP=7 … EMP=EMP+1 …5

段定义伪操作 格式: 段名 SEGMENT [定位类型, 组合类型, 类别] …… 段名 ENDS例:定义用户堆栈 stack_seg segment dw 40H dup (?) tos label word stack_seg ends code_seg segment …… mov ax, stack_seg mov ss, ax mov sp, offset tos …… code_seg ends

STACK(SS)

40H

(SP)6

例:

data_seg1 … data_seg1 data_seg2 … data_seg2

segment ends segment ends ; 定义数据段

; 定义附加段

code_seg segment assume cs:code_seg, ds:data_seg1, es:data_seg2 start: mov ax, data_seg1 mov ds, ax mov ax, data_seg2 mov es, ax ; 段地址 段寄存器 … code_seg ends end start7

程序开始和结束伪操作 格式:TITLE 程序名 END [程序首地址标号] 对准伪操作 EVEN ;使下一地址从偶地址开始 A DB morning EVEN B DW 2 DUP (?)

ORG 常数表达式 ;使下一地址是常数表达式的值 ORG 100H START: …...8

$ 地址计数器:保存当前正在汇编的指令的地址 例: ORG $+8 ; 跳过8个字节的存储区 JNE $+6 ; 转向地址是JNE的首址+6 例:$用在伪操作的参数字段——表示地址计数器的当前值 ARRAY DW 1, 2 , $+4 , 3 , 4 , $+4ARRAY

01 00 02 00 7C 00 03 00 04 00 82 00

0074

0078

007E

基数控制伪操作 格式:.RADIX 表达式 (2,8,10,16) ;规定无标记数的基数

例:.RADIX 16 MOV BX, 0FF MOV BX, 178D

4.3

汇编语言程序格式[符号地址] 变量 标号 操作 指令 伪指令 宏指令 操作数 寄存器 标号 变量 常数 表达式 [; 注释] 说明程序或语句 的功能

表达式:数字表达式 地址表达式11

表达式操作符(5类)(1)算

术操作符: , , , , mod 例: ADD AX, A+2; ; 符号地址 常数有意义 时意义不明确

MOV AX, BX+1 ;

(2)逻辑操作符:AND, OR, XOR, NOT 例: OPR1 EQU 25 OPR2 EQU 7 …… AND AX, 112

汇编

AND AX, OPR1 AND OPR2

(3)关系操作符:EQ, NE, LT, LE, GT, GE 计算结果为逻辑值:真 0FFFFH

假 0000H例:MOV FID, (OFFSET Y - OFFSET X) LE 128 X: …… …… Y: …… 若 128(真) 若 128(假) 汇编结果 MOV FID, -1 汇编结果 MOV FID, 013

(4)数值回送操作符: OFFSET / SEG 变量(或标号)

功能:回送变量或标号的偏址 / 段址例:MOV BX, OFFSET X MOV DX, SEG X

TYPE 变量(或标号)变量:DB DW DD DQ DT 值: 1 2 4 8 10 LENGTH 变量 功能:回送由DUP定义的变量的单元数,其它情况回送1 SIZE 变量 功能:LENGTH*TYPE14

标号:NEAR FAR -1 -2

例:ARRAY DW 100 DUP (?) TABLE DB ABCD

ADD SI, TYPE ARRAYADD SI, TYPE TABLE MOV CX, LENGTH ARRAY MOV CX, LENGTH TABLE MOV CX, SIZE ARRAY

; ADD SI, 2; ADD SI, 1 ; MOV CX, 100 ; MOV CX, 1 ; MOV CX, 200

MOV CX, SIZE TABLE

; MOV CX, 1

(5)属性操作符:

类型 PTR 表达式段操作符 SHORT 标号

例: MOV WORD PTR [BX], 5例: MOV ES: [BX], AL 例: JMP SHORT NEXT

THIS 类型

例: TA EQU THIS BYTETB DW 100 DUP (?) NEXT EQU THIS FAR MOV CX, 100

字节分离操作符 HIGH LOW

例: CONS EQU 1234H MOV AH, HIGH CONS MOV AL, LOW CONS16

第四章:汇编语言程序格式.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219