微机原理 程序格式及伪指令_第1页
微机原理 程序格式及伪指令_第2页
微机原理 程序格式及伪指令_第3页
微机原理 程序格式及伪指令_第4页
微机原理 程序格式及伪指令_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4 汇编语言程序设计汇编语言程序设计 4-1 汇编语言程序格式和伪指令(汇编语言程序格式和伪指令(难点难点) 汇编语言程序格式汇编语言程序格式 伪指令语句伪指令语句 完整的汇编语言程序框架完整的汇编语言程序框架 4-2 DOS系统功能调用和系统功能调用和BIOS中断调用中断调用 DOS系统功能调用系统功能调用 BIOS中断调用中断调用 4-3 汇编程序设计方法与实例(汇编程序设计方法与实例(重点重点) 顺序程序设计顺序程序设计 分支程序设计分支程序设计 循环结构程序循环结构程序 子程序调用子程序调用4 汇编语言程序设计汇编语言程序设计源程序源程序.asmS2 S2 汇编汇编使用使用汇编汇编程序

2、程序翻译翻译(MASM)目标代码目标代码(.obj)列表文件列表文件(.lst)交叉索引文件交叉索引文件(.crf)程序算法程序算法数据结构数据结构S1 编辑编辑使用使用编辑编辑程序程序编辑编辑可执行程序可执行程序.exeS3 S3 连接连接使用使用连接连接程序程序组合组合(LINK)汇编程序开发过程汇编程序开发过程 汇编语言程序汇编语言程序汇编语言程序是由汇编语言程序是由语句语句构成的,语句分为指构成的,语句分为指令性语句和伪指令语句令性语句和伪指令语句 指令性语句(指令性语句(InstructionInstruction)要求要求CPUCPU在可执行程序运行过程中在可执行程序运行过程中的进

3、行的操的进行的操作行为,该指令产生机器码,存储在程序存作行为,该指令产生机器码,存储在程序存储器中储器中 伪指令语句(伪指令语句(DirectiveDirective)要求要求汇编程序在汇编过程中汇编程序在汇编过程中进行的操作行为进行的操作行为,在汇编过程结束后,伪指令不再保留任何,在汇编过程结束后,伪指令不再保留任何痕迹,不产生机器码,不占用程序存储器空痕迹,不产生机器码,不占用程序存储器空间间汇编语言程序格式和伪汇编语言程序格式和伪指令指令指令性语句格式指令性语句格式标号:指令符标号:指令符 操作数,操作数操作数,操作数;注释;注释1) 1) 标号字段标号字段标号代表本指令的符号地址,必须

4、跟冒号“:”,这是与伪指令语句的突出区别2) 2) 指令符字段指令符字段 指令助记符与CPU的指令机器码对应,决定于CPU的要求3) 3) 操作数字段操作数字段可以由常数、变量、表达式构成。 4) 4) 注释字段注释字段 从“;”开始,直到行尾。行汇编程序,按行进行汇编汇编语言程序格式和伪指令汇编语言程序格式和伪指令伪指令语句格式伪指令语句格式名字名字 伪指令符伪指令符 操作数,操作数;注释操作数,操作数;注释1) 1) 名字字段名字字段: : 字母打头, 名字后不能用冒号“:”,这是与指令 性语句的突出区别2) 2) 伪指令字段伪指令字段 例如:数据定义:DB,DW,段定义:SEGMENT,

5、ENDS3) 3) 操作数字段操作数字段 可以由常数、符号、表达式构成 4) 4) 注释字段注释字段 从“;”开始,直到行尾。行汇编程序,按行进行汇编汇编语言程序格式和伪指令汇编语言程序格式和伪指令2.2.变量变量变量变量是代表存放在存储单元的数据是代表存放在存储单元的数据变量名变量名,可认为是存放数据的存储单元的符号地址,可认为是存放数据的存储单元的符号地址变量的属性变量的属性:段值(段值(SEGSEG)偏移地址(偏移地址(OFFSETOFFSET)类型(类型(BYTEBYTE,WORDWORD,DWORDDWORD)数据项数据项1.常数常数:(1)数字常量:)数字常量: (2)字符串常量:

6、)字符串常量:ASCII码码3.3.标号标号标号是一条指令代码的符号地址,该指令第标号是一条指令代码的符号地址,该指令第1 1个字节存储单元个字节存储单元属性有:属性有: 段段 值值(SEGSEG) 偏移量偏移量(OFFSETOFFSET) 距离属性距离属性:NEARNEAR(近),只能被本段内访问(近),只能被本段内访问 FARFAR(远),可以被其它段访问(远),可以被其它段访问 类别类别符号符号名称名称运算结果运算结果举例举例算算术术运运算算符符+-*/MODSHLSHR加加减减乘乘除除取模取模左移左移右移右移取和值取和值取差值取差值取乘积取乘积取商值取商值取余数取余数左移左移2进制位进

7、制位右移二进制位右移二进制位逻逻辑辑运运算算NOTANDORXOR非非与与或或异或异或按位逻辑非按位逻辑非按位逻辑与按位逻辑与按位逻辑或按位逻辑或按位逻辑异或按位逻辑异或 表达式表达式 将常数、符号等数据项通过运算符连接起来的算式将常数、符号等数据项通过运算符连接起来的算式 由汇编程序在汇编过程中计算,汇编结束时,为确定值由汇编程序在汇编过程中计算,汇编结束时,为确定值表达式和运算符表达式和运算符类别类别符号符号名称名称运算结果运算结果举例举例关关系系运运算算符符EQNELTLEGTGE相等相等不等不等小于小于小于或等于小于或等于大于大于大于或等于大于或等于结果为真时,结果为真时,输出全为输出

8、全为“1”结果为假时,结果为假时,输出全为输出全为“0”数数值值返返回回符符SEGOFFSETLENGTHTYPESIZEHIGHLOW取段基址取段基址取偏移地址取偏移地址取元素个数取元素个数取类型取类型取总字节数取总字节数分离高字节分离高字节分离低字节分离低字节段基址段基址偏移地址偏移地址元素个数元素个数类型值类型值变量总字节数变量总字节数取高字节取高字节取低字节取低字节修改修改属性属性PTR段寄存器段寄存器:修改类型修改类型段超越段超越修改类型修改类型指定段指定段表达式和运算符表达式和运算符优先级优先级运算符运算符高高 01234567低低 8(),(), ,LENGTH,SIZEPTR,

9、OFFSET,SEG,TYPE,CS:,DS:,ES:,SS:HIGH,LOW*,/,MOD,SHL,SHR+,-EQ,NE,LT,LE,GT,GENOTANDOR,XOR表达式和运算符表达式和运算符 表达式中包含多个运算符时表达式中包含多个运算符时 按运算符的优先级从高到低顺序计算按运算符的优先级从高到低顺序计算 优先级相同的运算符,按从左到右的顺序计算优先级相同的运算符,按从左到右的顺序计算伪指令伪指令段定义段定义BYPEBYPE起始地址可从任何地方开始起始地址可从任何地方开始伪指令伪指令段定义段定义伪指令伪指令段定义段定义伪指令伪指令段定义段定义伪指令伪指令段分配段分配伪指令伪指令过程定

10、义过程定义伪指令伪指令程序结束程序结束格式格式: :变量名变量名 伪指令助记符伪指令助记符 操作数,操作数,操作数,操作数,;注释;注释变量名变量名 伪指令助记符伪指令助记符 N dup(N dup(操作数,操作数操作数,操作数 ) );注释;注释变量名变量名用符号表示,可以省略,表示第一个操作数的最低字用符号表示,可以省略,表示第一个操作数的最低字节所在存储单元的符号地址,节所在存储单元的符号地址,属性属性有段基址、偏移地址、类型有段基址、偏移地址、类型功能:功能:把操作数按从低地址到高地址的顺序依次存放到把操作数按从低地址到高地址的顺序依次存放到“变量变量名名”指定的存储单元中,或者只分配

11、存储空间而不存入数据。指定的存储单元中,或者只分配存储空间而不存入数据。操作数操作数可以是常数、字符串、变量、标号,表达式。多个操可以是常数、字符串、变量、标号,表达式。多个操作数之间必须用逗号作数之间必须用逗号“,”分隔分隔N dupN dup()():表示()里的内容复制:表示()里的内容复制 N N 次,并依次连续存放次,并依次连续存放伪指令伪指令包括包括DBDB、DWDW、DDDD、DQDQ、DTDT,分别定义每个操作数为,分别定义每个操作数为字节、字、双字、字节、字、双字、8 8字节、字节、1010字节字节变量变量伪指令伪指令变量定义变量定义例例: 操作数是常数或表达式操作数是常数或

12、表达式DA1DA1 DB DB 10H10H,52H52HDA2DA2 DWDW1122H1122H,34H34HDA3DA3 DDDD5 5* *20H20H,0FFEEH0FFEEHDA110H52H22H11H34H00H.A0H00H00H00HEEH.FFH00H00HDA2DA3伪指令伪指令变量定义变量定义例例: 操作数是字符串操作数是字符串FIRSTFIRSTDB DB ABCDEABCDESECONDSECONDDWDWOKOKTHIRDTHIRDDBDBOKOKFIRSTABCDEKOOK.SECOND注意:注意:w字符串操作数存储对应的字符串操作数存储对应的ASCIIASC

13、II码;码;w字符串一般用字符串一般用DBDB定义,按照从前到后的顺定义,按照从前到后的顺序存放;序存放;w当只有两个字符时,可用当只有两个字符时,可用DWDW定义,但要注定义,但要注意存放顺序;意存放顺序;1.1.多于两个字符,只能用多于两个字符,只能用DBDB定义;定义;THIRD伪指令伪指令变量定义变量定义例例: 用?定义不确定值的变量用?定义不确定值的变量M1M1DB DB ?M2M2DWDW0D55H0D55H,?,?M1?55H0DH?.M2注意:注意:1.1.?只保留存储空间,其初值无意义?只保留存储空间,其初值无意义伪指令伪指令变量定义变量定义例例: 用用 dup dup 定义

14、重复数值定义重复数值ONEONE DB DB 3 DUP3 DUP(0 0)TWOTWO DW DW 2 DUP2 DUP(1 1,2 2)ARYARY DBDB3 DUP (4 DUP (0)3 DUP (4 DUP (0)ONE0000000100020001000200.TWO伪指令伪指令变量定义变量定义例例: 用用 dup dup 嵌套定义重复数值嵌套定义重复数值THREE DBTHREE DB 2 DUP2 DUP(1 1,2 DUP2 DUP(20H20H,21H21H)THREE01H20H21H20H21H01H20H21H20H21H.伪指令伪指令变量定义变量定义例例:有如下

15、定义:有如下定义TABLE1 DD 0TABLE1 DD 0,1 1,2 2,3 3 TABLE2 DB 30H,31H,32H,33HTABLE2 DB 30H,31H,32H,33HTABLE3 DB 12345678910 TABLE3 DB 12345678910 ZER DW 8 DUPZER DW 8 DUP(0 0)DEM DB HELLODEM DB HELLO?判断下列指令是否正确判断下列指令是否正确: :1. MOV AX,TABLE1 1. MOV AX,TABLE1 2. MOV BX,TABLE22. MOV BX,TABLE23. MOV AL, TABLE33.

16、MOV AL, TABLE34. MOV AX, WORD PTR TABLE14. MOV AX, WORD PTR TABLE1伪指令伪指令变量定义变量定义伪指令伪指令其它伪指令其它伪指令 例:例: PORT1 EQU 3PORT1 EQU 3 PORT2 EQU PORT1+2 PORT2 EQU PORT1+2 PORT3 EQU PORT2 PORT3 EQU PORT2 CONT EQU CX CONT EQU CX 即即: : PORT1=3 ,PORT2=5PORT1=3 ,PORT2=5 PORT3=5 ,CX PORT3=5 ,CX与与CONTCONT意义相同意义相同 PU

17、RGE PORT1 ;PURGE PORT1 ;解除解除PORT1PORT1的赋值的赋值 PORT1 EQU 10PORT1 EQU 10 即即: PORT1 = 10: PORT1 = 10例例:有如下定义:有如下定义TABLE DW 30H,31H,32H,33HTABLE DW 30H,31H,32H,33HPORT EQU 03F8HPORT EQU 03F8H比较比较: :1. MOV AX,TABLE 1. MOV AX,TABLE 2. MOV DX,PORT2. MOV DX,PORTFAR标号伪指令伪指令其它伪指令其它伪指令例例: LABEL LABEL 与变量连用与变量连用

18、DATBDATBLABELLABEL BYTEBYTEDATWDATWDWDW3031H3031H,3233H3233HMOVMOVALAL,DATB0DATB0MOVMOVAXAX,DATW1DATW1例例: LABEL LABEL 与标号连用与标号连用DISFDISFLABELLABEL FARFARDISNDISN:MOVMOVAXAX,SISI例例: LABEL LABEL 在堆栈段中的应用在堆栈段中的应用STACKSTACK SEGMENTSEGMENTSTACKSTACK STACKSTACKDWDW100 DUP100 DUP(?)(?)TOPTOPLABELLABEL WORDWORDSTACKSTACK ENDSENDS存放DATA ENDS伪指令伪指令其它伪指令其它伪指令DATA ENDS伪指令伪指令其它伪指令其它伪指令伪指令伪指令其它伪指令其它伪指令地址计数器地址计数器 $ $功能:功能:$ $ 表示当前正在汇编的指令性指令或伪指令的偏移地址。表示当前正在汇编的指令性指令或伪指令的偏移地址。例例: $ $ 在代码段中的应用在代码段中的应用JMPJMP$ $等价于:等价于:LPLP:JMPJMPLPLP$ $ 在指令性语句中代表这条指令的第一个字节的地址在指令性语句中代表这条指令的第一个字节的地址例例: $ $ 在数据段中的应用在数据段中的应用AB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论