预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共140页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《微机原理与接口技术》主讲易凡wdyifan@163.com武汉大学物理学院电子科学与技术系第四章汇编语言程序设计4.1汇编语言的基本概念4.1.1汇编语言程序的一般概念(续)汇编程序的主要功能4.1.2上机的步骤4.2汇编语言程序格式4.2.2语句的格式4.2.2语句的格式表达式: 是常数、寄存器、标号、变量与一些操作符相组合的序列。分数字表达式和地址表达式两种。数字表达式产生一个数值结果,地址表达式产生一个地址。4.2.3操作符算术操作符应用之例逻辑运算操作符 AND(逻辑与) OR(逻辑或), XOR(逻辑异或) NOT(逻辑非)。例4.4 AND DX,PORT_VALAND0FEH 汇编‘PORT_VALAND0FEH’确定了外设端口号关系运算操作符 EQ(等于)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于) 参与关系运算操作的两个操作数必须都同为数字或为同一段内的两个存储器地址。 计算的结果应为逻辑值: 结果为真,表示为FFFFH 结果为假,表示为0例4.5: MOVAX,4EQ3 ;结果为假 等价于 MOVAX,0 MOVAX,4NE3 ;结果为真 等价于 MOVAX,0FFFFH 例4.6 MOVBX,((PORT_VALLT5)AND20)OR ((PORT_VALGE5)AND30) 当PORT_VAL﹤5时,汇编结果为: MOVBX,30 否则,汇编结果为: MOVBX,20分析运算符分析运算符应用之例分析运算符(续)例4.10: VAR DW? ;VAR为字变量 ARRAY DD10DUP(?) ;ARRAY为双字变量 STR DB‘THISISTEST’ ;STR为字节变量  MOV AX,TYPEVAR ;(AX)←2 MOV BX,TYPEARRAY ;(BX)←4 MOV CX,TYPESTR ;(CX)←1LENGTH 格式:LENGTH变量(名) 功能:取重复定义(DUP)的复制次数,若不是DUP定 义,则取数值1。例4.13若: FEES DW100DUP(?) 则 TYPE FEES=2 LENGTHFEES=100 SIZEFEES=(LENGTHFEES)×(TYPEFEES)=100×2=200 所以 MOVCX,SIZEFEES 汇编后: MOVCX,200综合运算符例4.15 设已有数据定义如下 TWO_BYTE DW? 可用以下语句对这两个字节赋予另一种类型定义 ONE_BYTE EQUBYTEPTRTWO_BYTE OTHER_BYTEEQUBYTEPTR(TWO_BYTE+1) OTHER_BYTEEQUBYTEPTRONE_BYTE+1 ONE_BYTE与TWO_BYTE皆为符号地址 它们的段和偏移量属性相同,但类型属性不同,前者是BYTE类型,后者是WORD类型。例4.16FIRST_TYPE EQU THISBYTE WORD_TABLE DW 100DUP(?) FIRST_TYPE与WORD_TABLE的段,偏移地址均相同,但前者是BYTE类型,后者是WORD类型。字节分离运算符LOW、HIGH 功能:分别得一个数值或地址表达式的低位和高位字节4.3伪指令语句数据定义伪指令语句操作数字段的几种形式举例00操作数是字符串43--关于复制操作符DUP(duplicationoperator)操作数是已定义的变量或标号符号定义的伪指令等号=伪操作 “=”与“EQU”的功能一样,但“=”操作允许表达式重复定义类型定义伪指令LABLE 格式:标号/变量LABLE类型 功能:对标号/变量的类型定义,它的段地址和偏 移地址与下一个存储器单元的相同。 变量类型:BYTE、WORD、DWORD 标号类型:NEAR、FARLABLE伪指令应用举例段定义伪指令SEGMENT/ENDS定位类型-对本逻辑段边界定位定位类型应用举例DATA2 SEGMINTWORD ;DATA2段,WORD边界 BUFFER DW40DUP(0) ;长度为40个字 DATA2 ENDS ;DATA2段结束 CODE1 SEGMINTPAGE ;CODE1段,PAGE边界 : CODE1 ENDS ;CODE1段结束 CODE2 SEGMENT ;CODE2段,PAGE边界 : START: MOVAX,STACK MOVSS,AX : CODE2 ENDS ;CODE2段结束 ENDSTART ;源程序结束本例的源程序中共有五个逻辑段,段名和定位类型分别为: STACK段,PARA边界:段长度为100个字节(64H) DATA1段,BYTE边界:段长度为19个字节(13H) DATA2段,WORD边界:段长度为80个字节(5