如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第四章汇编语言程序设计机器语言:计算机执行的指令一组二进制代码最原始编写程序的方式汇编语言:利用指令的助记符、符号地址、标号来编写的语言。说明:汇编语言是面向机器的语言,和机器的硬件密切相关。高级语言:独立于机器源程序比较:(1)机器语言:不易记忆和理解,使用和修改麻烦但程序效率高,执行最快。(2)汇编语言:执行速度与机器语言相当比机器语言易理解仍不能独立于机器多用于实时控制,实时通信程序(3)高级语言:易学习,使用方便,通用性强,源程序较短,但目标程序大执行时间比较长,效率低第一节汇编语言程序格式第二节语句行的构成一、标记3.常量(1)数字(整数)常量:二进制以B结束十进制十六进制以H结束(2)字符串常量:单引号内的ASCII字符构成‘A’4.标识符(Identifiers)程序员建立的有意义的字符序列,如SUM。最多为32个字母,数字,特殊字符(?@-$),不能是数字打头。5.保留字(Reservedwords)(1)指令助记符,如:ADD,SUB,MOV(2)寄存器名,如:AX,AL,SP(3)伪指令,如:SEGMENT,END(4)其它保留字,如:BYTE,WORD6.注释(Comment);后的任意字符序列,直至行末。返回二、符号(Symbol)3.标号(Lable)某条指令所存放单元的地址。属性:(1)段值(2)偏移量(3)类型:NEAR近,只改变IPFAR远,改变CS和IP4.数常数也以符号的形式出现,便于修改。如:COUNTEQU1005.其它符号返回三、表达式(Expressions)2.运算符(Operators)一个运算符取一个或多个操作数的值,形成一个新值。(1)算术运算符:如+-*/MOD对地址的运算如:加,减(2)逻辑运算符:如AND,OR,XOR,NOT(3)关系运算符:相等EQ(Equal)不等NE(NotEqual)小于LT(LessThan)大于GT(GreaterThan)小于或等于(LessThanorEqual)大于或等于(GreatThanorEqual)说明:①两个操作数,或都为数字,或是同一段的存储单元地址,结果总是一个数值。②关系是假,数值为0关系是真,数值为FFFFH例1:MOVBX,PORT_VALLT51)若PORT_VAL<5关系为真,汇编后产生语句为MOVBX,0FFFFH2)若PORT_VAL≥5关系为真,汇编后产生语句为MOVBX,0例2:与逻辑运算符结合用MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALLT5)AND30)1)PORT_VAL<5为:MOVBX,202)PORT_VAL≥5为:MOVBX,3017(4)分析运算符分解成段地址存储器单元地址偏移量类型(5)合成运算符由已存在的存储器操作数生成一个段值和偏移量相同,而类型不同的新的存储器操作数。返回四、语句(Statements)说明:(1)指令格式标号:助记符参数,…参数;注释伪指令格式名字命令参数,…参数;注释注意:指令标号后有冒号,伪指令后没有。(2)指令的标号与指令的地址相联,可作为JMP和CALL指令的目标操作数。伪指令的名字与指令的地址毫无关系,绝不能转向它。返回第三节伪指令一、符号定义语句(Symbol)2.等号语句格式:NAME=EXPRESSION功能:与EQU的功能相同,区别在于EQU的左边标号不能重新定义,而=语句可以。例:EMP=6EMP=EMP+1A1=BX+SIMOVAX,[A1];[BX+SI]单元内容→AXB1=ADDA1=BXMOVCX,[A1];[BX]单元内容→CX3.解除语句格式:PURGE符号1,符号2,...功能:已经用EQU定义的符号,不用了可用PURGE语句来解除。例:PURGENEW_PORTNEW_PORTEQUPORT_VAL+10解除后的符号又可用EQU来重新定义了。返回二、数据定义语句(Data)BUF4DW4DUP(?);BUF4单元开始留出4个字单元,内容不定BIGGEST_THINGDD12345678H;双字,定义4个字节IN_PORTDBPORT_VAL;初始值为表达式,PORT_VAL已赋值BUF5DB6DUP(0);BUF5开始的6个单元,初始值为0BUF6DB4DUP(1,2DUP(20H));DUP嵌套,内存放次数01,20H,20H,01,20H,20H……重复四次LITTLE_CYCLEDWCYCLE;CYCLE的段内偏移放入LITTLE_CYCLE,LITTLE_CYCLE