如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
微机原理与接口技术第四章主要内容汇编程序编写、编译和运行4.1汇编语言程序格式和伪指令4.1.1汇编语言程序格式1.指令性语句1)标号
标号的取名规则:
可由字母、数字、下划线等特殊字符组成
首字符必须为字母或某些特殊字符,不能为数字(数值常量必须以数字开头)
名字最长31个字符
保留字不能作为名字
标号具有3种属性:段基址,偏移地址,类型。
2)指令助记符
指令语句中必须的部分操作数项
操作数可以是常数、寄存器、存储区、变量、标号、表达式,其中常数、变量和标号是三种基本数据项。
常数
变量
标号常数
给出具体的数据。可以是数字常量或字符常量。
◢◢数字默认十进制,也可加D表示十进制数。如1234D,1234
◢◢数字后加B表示二进制数。如1010B
◢◢数字后加H表示十六进制数。如1234H
◢◢字符常量,用单引号表示。如‘1234’
汇编后,用字符对应的ASCII表示。如31H,32H,33H,34HA、B、C、D、E、F开头的十六进制数前面加0,
与H结尾的标识符区别。
如寄存器名AH、BH、CH、DH
变量名abcdH等
例movAL,0AH
movAL,AH
movBX,0abcdH变量
用符号表示的存放在存储单元中的可变数值。由DB、DW、DD等伪指令定义。
具有三种属性:段基址、偏移地址、类型2.伪指令语句3.表达式和运算符1)算术运算符例
DA EQU 300
MOV AX,DA-80
MOV BX,DAMOD100
MOV CX,DA/100
MOV DH,01100100BSHR2
;上述语句等效于:
DA EQU 300
MOV AX,200
MOV BX,0
MOV CX,3
MOV DH,19H补充:现行地址符$(程序计数器)2)逻辑运算符和关系运算符例
MOV AL,NOT0FFH
MOV BL,8CHAND73H
MOV AH,8CHOR73H
MOV CH,8CHXOR73H
;上述语句等效于:
MOV AL,0
MOV BL,0
MOV AH,0FFH
MOV CH,0FFH例
MOV AX,10HGT16
MOV BL,6EQ0110B
MOV CX,((PORTLT5)AND100)OR(PORTGE5)AND200)
;上述语句等效于:
MOV AX,0
MOV BL,0FFH
MOV CX,100 ;PORT<5时3)数值返回TYPE返回类型
TYPE
例:
000620 A1DB20H
0007???? A2DW?
0009???????? A3DD ?
000D???????????????? A4DQ ?
0015??????????????????? A5DT ?
001EB401 MOV AH,TYPEA1
0020B402 MOV AH,TYPEA2
0022B404 MOV AH,TYPEA3
0024B408 MOV AH,TYPEA4
0026B40A MOV AH,TYPEA5
0028B4FF MOV AH,TYPETMP_NEAR
002AB4FE MOV AH,TYPETMP_FARLENGTH
例
M1 DW 100DUP(?)
M2 DW 1,2,3
M3 DB ‘ABCD’
MOV CX,LENGTHM1
MOV BL,LENGTHM2
MOV AL,LENGTHM3
;上述语句等效于:
MOV CX,100
MOV BL,1
MOV AL,1SIZE(SIZE=TYPE*LENGTH)
例
M1 DW 100DUP(?)
M2 DW 1,2,3
M3 DB ‘ABCD’
MOV CX,SIZEM1
MOV BL,SIZEM2
MOV AL,SIZEM3
;上述语句等效于:
MOV CX,200
MOV BL,2
MOV AL,14)修改属性段操作符
PTR
例 N1 DB15H,36H
N2 DW1122H,3344H
LO: MOV AX,WORDPTRN1 ;AX=3615H
MOV BL,BYTEPTRN2 ;BL=22H
优先级4.1.2伪指令语句1.段定义语句2.段分配段定义和段分配举例:
DATA SEGMENT
D1 DW1234H
D2 DW5678H
P1 DD?
P2 DD?
DATA ENDS
STK 1 SEGMENTSTACK'STACK'
DW 100DUP(?)
STK 1 ENDS
CODE SEGMENT
A