《汇编语言程序设计》-电子教案第二章;第二章 程序设计基础;本章学习目标;2.1 汇编语言源程序结构
;例2-1显示信息“Howdoyoudo?”;例2-2将内存缓冲区中以BUFA开始的一组字数据传送到BUFB开始的内存区。; LEA SI,BUFA
LEA DI,BUFB
MOV CX,COUNT
LOP: MOV AX,[SI]
MOV [DI],AX
INC SI
INC SI
INC DI
INC DI
DEC CX
JNZ LOP
MOV AH,4CH
INT 21H
CODE ENDS
END START
;2.1.2机器指令简介
;所有机器指令从格式上看,有3种指令格式:; ②单操作数指令
格式:助记符操作数
例如: PUSH AX
POP BX; ③双操作数指令
格式:助记符目的操作数,源操作数
例如:MOV CX,DX;2.1.3常量、变量、标号及表达式
;例如:在下面的汇编源程序中,带下画线的量就是常量
DATA SEGMENT
STR DB“Howdoyoudo?$”
DATA ENDS
STACK SEGMENT STACK
DB 200DUP(?)
STACK ENDS
CODE SEGMENT
ASSUMEDS:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA
MOV DS,AX
LEA DX,STR
MOV AH,9
INT21H
MOV AH,4CH
INT 21H
CODE ENDS
END START; 例如:在下面的数据段中,带下画线的是一个符号常数,它是使用EQU伪指令定义的。
DATA SEGMENT
BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H
COUNT EQU($-BUFA)/2
BUFB DW COUNTDUP(?)
DATA ENDS
定义符号常数使用EQU伪指令、“=”伪指令。;2.变量
;(1)变量的定义;例如:在数据段DATA中定义字节变量STR。
DATA SEGMENT
STR DB“Howdoyoudo?$”
DATA ENDS;例如:在数据段DATA中定义了字变量BUFA和BUFB。
DATA SEGMENT
BUFA DW367BH,2845H,0A78H, 9DE3H,0F6BH,6532H
COUNT EQU($-BUFA)/2
BUFB DWCOUNTDUP(?)
DATA ENDS;(2)变量的属性;3.标号
;(1)标号的定义;(2)标号的属性;4.表达式
;(1)算术运算符;例如:算术表达式的计算
219/7=31
86.4/2.6=33
219MOD7的结果为2;(2)关系运算符;例如:假设NUM的值为60H。则:
NUM GT 80H
NUM EQ 60H ;⑶逻辑运算符;例如:假设NUM的值为6BH?
则:
NUM AND87H ;表达式的值是03H
NUM OR 87H ;表达式的值??0EFH
NUMXOR87H ;表达式的值是0ECH
NOT 87H ;表达式的值是78H
NUMSHR2 ;表达式的值是1AH
NUMSHL 2 ;表达式的值是0ACH;⑷其他运算符;①SEG;②OFFSET;DATA SEGMENT
BUFA DW367BH,2845H,0A78H, 9DE3H,0F6BH,6532H
COUNT EQU($-BUFA)/2
BUFB DWCOUNTDUP(?)
DATA ENDS
MOV AX,SEGBUFA
MOVDS,AX
MOVSI,OFFSETBUFA
MOVDI,OFFSETBUFB;③TYPE
返回其后变量或标号的类型。;例如:在下面的数据段中。
DATA SEGMENT
A DB87H,45H,92H
B DW34D6H,0F67H
C DD?
DATA ENDS
若在代码段中有如下指令:
MOVAH,TYPEA
MOVAL,TYPEB
MOVCH,TYPEC
则将被汇编成:
MOVAH,1
MOVAL,2
MOVCH,4;④LENGTH;⑤SI