计算机硬件技术基础大纲_1
汇编语言程序设计
§1 汇编语言初步
汇编过程及工具
编辑(汇编(连接(运行
调试程序DEBUG
宏汇编基本语法
汇编源程序结构
程序={块1[数据段、堆栈段、代码段(过程1()],块2(}
过程={指示性语句,指令性语句}
指示性语句格式:
[名字] 伪指令 [操作数] [;注释]
指令性语句格式:
[标号:] [前缀]指令助记符 [操作数] [;注释]
例子
DATASEGMENT
SUMDB ?
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
PORTEQU 3
MAINPROC
GO:MOV AX,DATA
MOV DS,AX
MOV SUM,0
CYCLE:CMP SUM,100
JNA NODONE
MOV AL,SUM
OUT PORT,AL
MOVAH,4CH
INT 21H;返回DOS
NODONE:IN AL,PORT
ADD SUM,AL
JMP CYCLE
MAINENDP
CODEENDS
END GO
§2 指示性语句
符号赋值定义
EQU
格式: 符号名 EQU 表达式
表达式----值或符号(段前缀、操作数、变址引用、指令名等)
例: CONST EQU 256
DATAEQU ARRAY
ABEQUDS:[BP+8]
MEQUMOV
2.=
格式: 符号名 = 数值
定义常数,且可以重复定义,重新定义后,原来的定义自动作废。
例: A=12H
B=256
数据定义
格式: [变量名] 数据定义伪操作 表达式
数据定义伪操作: DB、DW、DD
表达式: 数值表达式、ASCII表达式、地址表达式
例1:
ADB10*20
STR1DW‘THAT IS ALL!’,0DH,0AH,’$’
DATA1DW 10 DUP(?)
SUMDW ?
TABLEDB10 DUP(4 DUP(3),7)
DBPTRDDTABLE
例2: AX 的内容为多少?
XDB ‘AB’
YDW ‘AB’
MOV AX,‘AB’;(AX)=4142H
LEA BX,X
MOV AX,[BX];(AX)=4241H
LEA BX,Y
MOV AX,[BX];(AX)=4142H
例3: 数组累加和
XYDW…
MOVAX,XY
MOV DX,0
MOV BX,0
K1:ADD BX,2
ADDAX,XY[BX]
ADCDX,0
CMPBX,38
JNE K1
段、过程、模块定义
段定义
段名SEGMENT
((
段名ENDS
过程定义
过程名PROC
((
过程名ENDP
模块定义
NAME模块名
((
END [标号]
或者 TITLE 模块名
若没有任何标名,则以原文件名为模块名。
ASSUME
格式: ASSUME CS:段名,DS:段名[,SS:段名,ES:段名]
ORG
ORG表达式
汇编程序从该表达式的值为开始地址为代码段分配存储空间。
运算符
SEG X;取段址
OFFSET X;取偏址
PTR;定类型
运算符优先权(由高到低)
1. [ ],结构变量域,LENGTH,SIZE,WIDTH,MASK
段前缀的名:
PTR,OFFSET,SEG,TYPE,THIS,段前缀
HIGH,LOW
*,/,MOD,SHL,SHR
+,-
关系运算符 EQ,NE,LT,LE,GT,GE
逻辑运算 NOT,AND,OR,XOR
SHORT
§3 汇编语言程序设计概述
判断程序质量的标准
程序正确、完整
程序易读(注释,说明)
程序执行时间
程序所占空间及行数
程序流程
规定
常见流程
顺序 分支 循环 子程序模块
§4 键盘输入与数据显示
键盘输入
键盘DOS操作
AH 功 能入口参数出口参数1键入一字符,并回显,遇∧Brea