chapter4.1

上传人:xia****ai 文档编号:243144495 上传时间:2024-09-16 格式:PPT 页数:41 大小:676KB
返回 下载 相关 举报
chapter4.1_第1页
第1页 / 共41页
chapter4.1_第2页
第2页 / 共41页
chapter4.1_第3页
第3页 / 共41页
点击查看更多>>
资源描述
微机原理及接口技术,第二级,第三级,第四级,第五级,微机原理及接口技术,第,4,章,教学重点,汇编语言源程序格式与开发,常量、变量和标号,汇编语言程序设计方法,顺序程序设计,分支程序设计,循环程序设计,子程序设计,1,、,汇编语言简介,汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序,在有些应用领域,汇编语言的作用是不容置疑和无可替代的,汇编程序设计的过程是与其他高级语言程序设计大致相同,一、源程序的构成及特点,例:,1 DATA SEGMENT,2 SUM DB,?,3 DATA ENDS,4 CODE SEGMENT,5 ASSUME CS,:,CODE,,,DS,:,DATA,6 BEGIN,:,MOV AX,,,DATA,7 MOV DS,,,AX,8 MOV SUM,,,0,9 CYCLE,:,CMP SUM,,,9,10 JNA DONE,11 MOV AL,,,SUM,12 OUT PORT,,,AL,13 HLT,14 DONE,:,IN AL,,,PORT,15 ADD SUM,,,AL,16 JMP CYCLK,17 CODE ENDS,18 END BEGIN,特点:,完整的汇编语言源程序由若干段组成,必须包含至少一个,代码段,,其他可有数据段、附加段或堆栈段,段与段之间的顺序可随意排列。,每段以段定义语句,SEGMENT,开始,以,ENDS,结束。,每个代码段至少有一条设定代码段段基址的语句,ASSUME,,其指明各段的段基址分别存于那个段寄存器。,通常一条语句占一行。,整个程序用,END,结束,否则错误。,源程序由,语句,序列构成,二、汇编语言的语句格式,指令,(,执行,),性语句,指令性语句用于表达处理器命令,(,也称硬指令,),,汇编后产生指令代码。规定,CPU,进行具体操作。,标号,:,指令助记符 操作数,操作数,;,注释,指示,(,说明,),性语句,指示性语句即伪指令,不产生操作码,仅在汇编时起作用,指示源程序如何汇编、变量怎样定义、过程怎么设置等,名字,伪指令助记符,参数,参数,;,注释,三、,ASM86,的标记,1,、标号、名字与标识符,标号,是反映硬指令位置(逻辑地址)和属性的标识符,后跟一个冒号分隔,名字,是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格没有冒号,标识符,(,Identifier,)必须以字母开头;可以由字母、数字、下划线组成,默认情况下,不区别字母大小写;一般最多由,31,个字符,再长忽略不计。,一个源程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的,保留字,例、判断下列标识符是否符合要求,M,、,PT3,、,M2N,、,WMU,、,86ASE,、,FGR#,、,F,¥、”,HG”,、,AAA,、,LOOP,、,BDH1,、,KL L,、,3XD,、,G65,、,H7S3,2,、保留字,保留字(,Reserved Word,),是汇编语言中有特定意义的字符(也称为关键字),主要有:,指令助记符,例如:,MOV,、,ADD,伪指令助记符,例如:,DB,、,DW,操作符,例如:,OFFSET,、,PTR,寄存器名,例如:,AX,、,CS,其他的保留字,关系运算符等 例如:,ABS,、,AT,、,BYTE,、,DUP,、,COMMON,、,LE,、,LOW,、,SEG,、,EQ,。,汇编语言大小写不敏感,3,、,界符(定义符),除字母、数字以外的,8086,允许使用的符号,可以做分隔符及表示一定的意义。,如:,+,、,-,、*、,/,、,=,、,、;、:等等。,4,、常数指令中出现的固定值、立即数、地址等,范围,065535,可以有二进制(,B,)、十进制、八进制(,Q,)、十六进制(,H,)和字符串常数。,十进制,由,0 9,数字组成,以字母,D,(,d,)结尾(缺省情况可以省略),100,,,255D,十六进制,由,0 9,、,A F,数字组成,以字母,H,(,h,)结尾,以字母开头的常数需要加一个前导,0,64H,,,0FFH,0B800H,二进制,由,0,和,1,两个数字组成,以字母,B,(,b,)结尾,01100100B,例:常数,字符串常量是用单引号或双引号括起来的单个字符或多个字符,其,数值是每个字符对应的,ASCII,码值,例如:,d,(,等于,64H,),AB,(,等于,4142H,),Hello, Assembly !,5,、注释,语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性,汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理, 只在打印源程序时照原样打印。,四、表达式,数值表达式一般是指由,运算符,连接的各种常量所构成的表达式,汇编程序在汇编过程中计算表达式,最终得到一个确定的数值,所以也是常量,表达式的数值在程序运行前的汇编阶段计算,所以组成表达式的各部分必须在汇编时就能确定,汇编语言支持多种运算符,我们经常使用的是加减乘除(, *,/,),例如:,mov,ax,3*4+5,;,等价于:,mov,ax,17,1,、操作数,可能是一个数据或是一个内存单元的地址,常用标号表示 如:,PORT,表示端口地址,存储器单元地址也常用标号表示,如:,START,:,MOV AX,,,DATA1,;,START,表示本条指令所在的地址,DATA1,表示数据地址,其为物理地址包含段基址和偏移量,2,、运算符,用运算符对一个或多个操作数进行运算,形成表达式。,算术运算符,+,、,-,、*、,/,、,MOD,(取余),如:,5+2-3*2,(,=1,),19MOD7,(,=5,),对地址运算只能用,+,、,-,,其余无意义,如:,START+2,、,SUM-5,等,逻辑运算符,AND,、,OR,、,NOT,、,XOR,逻辑运算按位进行,操作数必须是数据,结果也是数据,如:,77H AND 84H,(,=04H,),NOT 80H,(,=7FH,),注意:,上述逻辑运算符与,8086,指令形式相同,但有本质区别,指令在执行时由,CPU,完成,逻辑运算符在汇编时完成,如:,AND AL,,,86H AND PORT,设,PORT=FOH,则汇编后本指令为:,AND AL,,,80H,关系运算符,6,种,相等,EQ,不等,NE,小于,LT,大于,GT,小于等于,LE,大于等于,GE,关系运算符的操作数是,2,个数据,或同一段中,2,个存储单元的地址,汇编的结果:,关系成立值为,FFFFH,不成立值为,0,例:,MOV BX,,,PORT LT 50H,当,PORT50,时,上条指令相当于,MOV BX,,,0,例:,MOV BX,,(,PORT LT 5,),AND20,),OR,(,PORT GT 5,),AND30,),如:,PORT LT 5,成立 则为,MOV BX,,,20H,PORT GT 5,成立 则为,MOV BX,,,30H,分析运算符和综合(合成)运算符,将存储单元的地址分解为段基址、偏移量或者定义类型等。,5,个分析运算符,SEG,:取内存单元的段基址,如,MOV AX,,,SEG DATA,MOV DS,,,AX,OFFSET,取内存单元的偏移量,如:,MOV BX,,,OFFSET DAT1,TYPE,运算符返回一个数值表示存储单元的类型,规定:字节,1,字,2,双字,4,如:,MOV AL,,,TYPE DAT1,;若,DAT1,已定义为字节 则,AL=1,LENGTH,长度,计算一个已定义的存储区中存储单元的数目,注意:不是字节数,而是按照定义时的类型为基本单位计算,如:,KAM DW 100 DUP,(?),则:,LENGTH KAM,(,=100,),应用,MOV CX,,,LENGTH BUFF,SIZE,尺寸,计算一个已定义的存储区的字节数,SIZE=LENGTH*TYPE,如上例中,SIZE KAM,(,=200,),另有,2,个综合运算符,PTR,用它规定存储单元的类型,要与,BYTE,、,WORD,、,DWORD,联合使用,例:,MOV BYTE PTR 2100H,,,0,NOT WORD PTR SI,另外:,PTR,也可以改变一个已经规定了类型的存储单元的类型,但不另分配存储器。,例:,DATA,段中,XYZ DW 10 DUP,(?),然后用,PP EQU BYTE PTR XYZ,QQ EQU BYTE PTR XYZ+1,KK EQU DWORD PTR XYZ+2,则:,XYZ,、,XYZ+1,单元为字节,XYZ+2XYZ +5,单元为双字,其余单元为字单元。,THIS,与,PTR,相似用来改变存储区的类型。,不开辟新单元,与,EQU,联用,例:,XYZ-2 EQU THIS BYTE,XYZ-1 EQU THIS BYTE,XYZ DW,?,则:,XYZ-1=XYZ XYZ-2=XYZ+1,使用,XYZ-1,、,XYZ-2,时为字节单元,使用,XYZ,时为字单元。,相当于:,XYZ DW,?,XYZ-1 EQU BYTE PTR XYZ,XYZ-2 EQU BYTE PTR XYZ+1,THIS,常将,EQU THIS,右边的类型或距离赋给左边的变量或标号。,五、伪指令,1,、标号赋值伪指令,EQU,给标号定义数值或其他标号,形式: 标号,EQU,表达式(数据或地址),标号,EQU,旧标号(已赋值),如:,BOLD EQU 212,NEW EQU PORT+2,COUNT EQU CX,CDB1 EQU ADE,用,EQU,定义过的标号未解除前不能重新定义,不用的标号可以解除。,解除语句:,PURGE,形式:,PURGE,标号,1,,标号,2,,,.,标号,n,2,、定义存储单元的伪指令,规定存储单元的内容、长度及类型,最常用的是,DB,、,DW,例:,CR DB 0DH,BUFF DW 3211H,DO2 DB,?,THIG DW 10 DUP(?),ST DB how are you ?,TABLE DB 00,01,03,02,06,04,05,07,DB 0FH,0EH,0CH,0DH,09,0BH,0AH,08,ALPH DB 5 DUP(1,2,4DUP(3),2DUP(1,0),定义时可以用表达式,如:,IN-PORT DB PORT,OUT-PORT DB POR+1,DD,定义双字,DQ,定义,4,个字,DT,定义,10,个字,3,、定义单元类型的伪指令,BYTE,、,WORD,、,DWORD,常用在指令中,如:,MOV BYTE PTR DI,,,0,INC WORD PTR BX+SI,JMP DWORD PTR 2000H,4,、段定义伪指令,SEGMENT,、,ENDS,、,ASSUME,、,ORG,在运行程序时,每条语句、所用数据等都在某一段中,因此因该给段起名字,规定段的起始地址,说明于其它段的关系等,要用段定义为指令。,一般用法:段名,SEGMENT ;,段起始,段名,ENDS ;,段结束,另外,:,SEGMENT,后可写,定位类型,联系类型,分类名,定位类型可用低,4,位为,0,、紧接起始、偶地址起始等,联系类型可规定各段不连接、同名连接等,分类名用单引号引起,在连接时起作用。,段设定语句 每个代码段中至少一条段设定语句,用来设定段寄存器的内容,一般形式:,ASSUME CS,:,CODE,,,DS,:,DATA,,,SS,:,STACK,,,ES,:,DATA,除,CS,外,,DS,、,SS,、,ES,还需用,MOV,指令完成传送。,另外形式:,ASSUME NOTHING,表示删除原设定过的段寄存器的内容。,ORG,规定目标程序存放的偏移地址,形式:,ORG 200H,例:,DATA SEGMENT,M1 DB2,,,3,,,4,,,5,;,M1,偏移地址为,0,DATA ENDS,比较:,DATA SEGMENT,ORG 2000H,M1 DB2,,,3,,,4,,,5,;,M1,偏移地址为,2000H,DATA ENDS,5,、,过程定义语句,PROC,、,ENDP,、,NEAR,、,FAR,定义过程:标号,PROC,.,.,标号,ENDP,NEAR,表示段内调用形式如下,:,标号,PROC NEAR (,可省略,),FAR,表示段间调用形式如下,:,标号,PROC FAR,6,、源程序结束伪指令,END,告诉汇编源程序到此结束,必须有,END,指 令,否则汇编出现错误。,形式:,END,表达式(标号),表达式的作用是将第一条指令的地址自动装入,CS,和,IP,。,例 :多字节相加,DATA SEGMENT,FIRST DB 11H,22H,33H,44H,SECOND DB 55H,66H,77H,88H,SUM DB 20 DUP(?),DATA ENDS,STACK SEGMENT,STA DB 20 DUP(?),TOP EQU LENGTH STA,STACK ENDS,CODE SEGMENT,ASSUME CS:CODE,DS:DATA,SS:STACK,START: MOV AX, DATA,MOV DS,AX,MOV AX, STACK,MOV SS,AX,MOV AX, TOP,MOV SP,AX,MOV SI, OFFSET FIRST,MOV DI, OFFSET SUM,MOV BX, OFFSET SECOND,MOV CX, 04,CLD,CLC,ADITI: CALL AAA1,LOOP ADITI,.,.,.,AAA1 PROC NEAR,LODSB,ADC AL, BX,DAA,STOSB,INC BX,RET,AAA1 ENDP,CODE ENDS,END START,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!