微机原理ch4(1) 汇编语言程序设计

上传人:suns****4568 文档编号:85314976 上传时间:2019-03-09 格式:PPT 页数:48 大小:2.21MB
返回 下载 相关 举报
微机原理ch4(1) 汇编语言程序设计_第1页
第1页 / 共48页
微机原理ch4(1) 汇编语言程序设计_第2页
第2页 / 共48页
微机原理ch4(1) 汇编语言程序设计_第3页
第3页 / 共48页
微机原理ch4(1) 汇编语言程序设计_第4页
第4页 / 共48页
微机原理ch4(1) 汇编语言程序设计_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《微机原理ch4(1) 汇编语言程序设计》由会员分享,可在线阅读,更多相关《微机原理ch4(1) 汇编语言程序设计(48页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计,第四章,4.0 概述 4.1 汇编语言程序格式 4.2 伪指令语句 4.3 程序设计方法 4.4 DOS系统功能调用,4.0 概述,从使用者的角度看,一般可分成以下三种: 1、机器语言(Machine Language) 用0、1数字代码来表示机器操作; 如:MOV AX,BX1000101111000011 特点:计算机能直接识别,执行速度快; 不方便记忆和编程,一、计算机程序设计语言,2、汇编语言(Assembly Language) 用助记符来表示指令,如:MOV、ADD、IN 特点:机器不能识别,需翻译 面向硬件,执行速度较快 用于编写实时控制程序 3、高级语言(Hi

2、gh-level Language) 用数学语言和自然语言编程; 如:加法:;输出:cout 特点:编程简单、不需了解机器硬件、速度较慢 机器不能直接识别,需庞大的翻译系统,一般应用: 混合语言 汇编语言+高级语言等混合编程 各取所长,相互调用 汇编语言实现:硬件操作 高级语言实现:复杂算法,1、几个名词 汇编语言:用助记符来表示指令的语言。 汇编语言源程序:用汇编语言编写的程序。 汇编:将源程序翻译成机器代码的过程。 汇编程序:将源程序翻译成机器代码的程序。,二、汇编语言源程序执行过程,2、汇编语言源程序执行过程,8086系统中常用的汇编程序: MASM6.X 宏汇编 ASM 小汇编,三、完

3、整汇编源程序实例,DATA SEGMENT DA1 DB 12H DA2 DB 34H DA3 DB 00H DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA (下接右边),START: MOV AX,DATA MOV DS,AX MOV BL,DA1 ADD BL,DA2 MOV DA3,BL MOV AH,4CH INT 21H CODE ENDS END START,分析程序的结构、功能、组成,汇编源程序特点 分段的结构 4个段,至少有代码段,其他视需要而定; 有部分固定的程序框架(程序结构) 段定义、段分配、设置段地址、返回DOS、程序结束

4、基本组成-语句 有些是前面学过的指令语句,其他是MASM中规定的格式、语法语句。,段名1 SEGMENT ;段开始 段名1 ENDS ;段结束 段名2 SEGMENT ASSUME CS:段名2, DS:段名1 ;段分配 START:MOV AX,DATA MOV DS,AX ;送段基址 MOV AH,4CH ;返回DOS方法一 INT 21H 段名2 ENDS END START ;源程序结束,一般程序框架,MAIN PROC FAR PUSH DS MOV AX,0 PUSH AX RET MAIN ENDP,返回DOS方法二,写在堆栈段 的设置后面,4.1 汇编语言程序格式,MASM中的

5、语句分为两类: 指令性语句:有对应的机器指令。 伪指令语句:无对应的机器指令,汇编时对伪指令进行处理,可完成数据定义、存储区分配、段定义、段分配、过程定义、指示程序开始和结束等功能。 差别:格式及功能不同(形式); 汇编时能否形成对应的机器码(本质)。,一、汇编源程序的语句,1、指令性语句 格式:标号:指令助记符 操作数,操作数;注释 标号符号地址;必须加“:”;命名规则;可省 指令助记符指令名称,不可省 操作数操作对象;多个时用“,”隔开 注释以“;”开头;说明性语句,可省 例: NEXT:MOV AH,0FH ;将0FH送入AH中,2、伪指令语句(也称汇编命令语句) 格式:名字 伪指令指示

6、符 操作数,操作数;注释 功能:变量定义、段定义、段分配、程序开始、结束等 名字符号地址,不加“:”,变量名或段名等,可省 伪指令指示符MASM中规定的符号;如DB、DW和END等 操作数操作对象,多个时用“,”隔开 注释以“;”开头;说明性语句,可省 例:DA1 DB 10H,20H,30H ;定义变量DA1,并赋初值,MASM中使用的数据项:常数、变量、标号、寄存器、存储器或表达式。 1、常数 是固定值,没有属性,是确定的数据。 二进制:字母“B”结尾,如:00110100B; 十进制:字母“D”结尾或省略,如:1234D、5678; 十六进制:字母“H”结尾,“AF”开头时,前面加0;

7、字符串:用单引号 括起来单个字符或字符序列,如:A,123H。 注:字符串以ASCII码形式存放, 如:MOV AH,A ;AH=41H,二、数据项,2、变量 数据的符号地址; 变量名表示后面数据项第一字节的地址; 例:DA1 DB 10H,20H,30H, ;定义变量DA1,初值为,DA1表示10H的地址 相当于高级语言中的数组; 在程序中一般作为存储器操作数来使用。 例:MOV AH,DA1,变量的三种属性: 段值:变量所在段的段基址。 段内偏移地址:指变量所在地址与所在段首地址之间的地址偏移字节数。 类型:长度属性,指变量中每个元素所包含的字节数,类型有DB、DW、DD等。,3、标号 指

8、令性语句的符号地址; 名称代表后面指令性语句的开始地址; 可作为转移指令的目的操作数。 例: JMP NEXT NEXT:MOV AH,0FH,标号的三种属性: 段值:标号所在段的段基址,总在CS中。 段内偏移地址 类型:指标号可转移的距离,也称距离属性。 NEAR:近标号,实现段内转移或调用; FAR: 远标号,实现段间转移或调用。 默认为NEAR。,三、 MASM中的表达式,表达式:运算对象与运算符组成。 运算对象:常数、变量、标号。 运算符:MASM中有六类,包括: 算术运算符、逻辑运算符、关系运算符 数值返回运算符、修改属性运算符、其它 运算结果:常数或存储器地址 注意:所有表达式由M

9、ASM处理(即:在汇编时进行运算),掌握:常用运算符及表达式的结果,1、算术运算符 包括:+,-,*,/(取商),MOD(取余),SHL,SHR 特点:运算对象及结果均为整数,MOD为正整数。 地址只能加减,例: DA1 DB 1,2,3,4 DA2 DB 20 MOV AX,30*5 MOV AL,31MOD5 MOV AL,31/5 MOV AL,DA2-DA1,MOV AX,150 MOV AL,1 MOV AL,6 MOV AL,4,2、逻辑运算符 包括:AND,OR,NOT,XOR 特点:位运算; 运算对象、结果为常数。 运算结果长度由另一操作数决定。 例:MOV BL,8CH AN

10、D 73H MOV BL,AL AND OFFH MOV BX,NOT 0FFH,注意:AND AX,8CH AND 73H (两AND不同) 区别:前为指令助记符,后为运算符,且位置不同; 处理时间不同;前影响Flags,后不影响,MOV BL,00H () MOV BX,0FF00H,3、关系运算符 包括:EQ,NE,LT,GT,LE,GE 特点:运算对象:数据或同一段内的地址; 运算结果:关系为真,结果全1;假,全0 例:MOV AX,10H GE 16 MOV AL,10H GE 16,MOV AX,0FFFFH MOV AL,0FFH,关系运算符常与逻辑运算符组合起来使用 例:MOV

11、 CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200),若PORT5,MOV CX,100 若PORT5,MOV CX,200,4、数值返回运算符(分析运算符) 包括:OFFSET,SEG,TYPE,LENGTH,SIZE 格式:运算符 变量或标号 功能: OFFSET:取偏移地址值; SEG:取段基址; TYPE:返回长度(变量)或距离(标号)属性值;,LENGTH: 对于一般变量,返回1; 对于DUP定义的变量,返回单元数(直接返回第一个DUP前的N值); 说明:DUP为复制操作符,格式:N DUP(表达式); N表示复制次数,表达式为复制内容 例:2 D

12、UP(1,2) 等价于 1,2,1,2 SIZE:SIZE=LENGTH*TYPE,数值返回运算符(续),例:设DS=0200H,从偏移量为0000H定义以下变量: DA1 DW 1234H,5678H DA2 DD 5 DUP(1,2) . MOV AX,OFFSET DA1 MOV AX,OFFSET DA2 MOV AX,SEG DA1 L1:MOV AX,TYPE DA2 MOV AX,TYPE L1 MOV AX,LENGTH DA1 MOV AX,SIZE DA2,MOV AX,4 MOV AX,0FFFFH MOV AX,1 MOV AX,20,MOV AX,0000H MOV

13、AX,0004H MOV AX,0200H,数值返回运算符(续),5、修改属性运算符 段操作符 ES:,DS:,SS:,CS: 修改段基址的来源 例: MOV AX,BX ;默认段基址在DS中 MOV AX,ES:BX ;段基址在ES中 PTR 格式:类型/距离 PTR 变量或标号 功能:临时改变或指明变量或标号的类型属性, 常与BYTE、WORD、NEAR、FAR等连用。,例:DA1 DB 15H,36H DA2 DW 1122H,3344H MOV AX,DA1 MOV AL,DA2 MOV BX,10H 改:MOV AX,WORD PTR DA1 MOV AL,BYTE PTR DA2

14、;临时改变变量类型 MOV WORD PTR BX,10H ;临时指明操作类型 思考:这三条指令执行后的结果分别是多少? AX=3615H,AL=22H,(DS:BX)=0010H,() ;长度不一致,() ;长度不一致,() ;类型不明,6、其他运算符 ():改变优先级; :内存单元地址 补充 $:地址计数器的当前值(即当前偏移地址) 例:DA1 DW 1,2,$+4,0AH 若DA1偏移地址为1000H,则上述变量定义等效为: DA1 DW 1,2,1008H,0AH,例: 若 DA1 DB 01H,02H,03H DA2 DW 5566H COUNT EQU $-DA1 则:COUNT的

15、值为5 COUNT表示:DA1,DA2占的字节总数(长度之和) 7、优先级(P134 表4.3),4.2 伪指令语句,在汇编时进行处理,主要完成变量定义,段定义,段分配,指示程序开始和结束等功能。 常用: 数据定义(变量定义)语句:DB,DW,DD 符号定义语句:EQU,= 段定义语句:SEGMENTENDS 段分配语句:ASSUME 过程定义语句:PROCENDP 程序开始、结束语句:ORG,END,一、数据定义(变量定义)语句(DB,DW,DD) 格式1:变量名 助记符 opr,opr;注释 格式2:变量名 助记符 N DUP(opr,opr);注释 助记符: DB:定义字节变量,表示每个

16、opr占一个字节 DW:定义字变量,表示每个opr占2个字节 DD:定义双字变量,表示每个opr占4个字节 N:重复次数,正整数,掌握:变量占的总字节数;在内存中的存放格式,例1:opr是常数或表达式 若数据定义语句如下: DA1 DB 10,5,10H DA2 DW 100H,100,-4 DA3 DD 2*30,0FFFBH 则各变量所占字节数: DA1 3B; DA2 6B; DA3 8B;,汇编后存放格式如下图:,例2: opr是字符串 DA1 DB HELLO DA2 DB OK DA3 DW OK 字节数:DA1 5B DA2 2B DA3 2B 思考: DA4 DW ABC怎么存储? 注:DW定义字符串时,最多包含2个字符。,汇编后存放格式如下图:,(),例3:opr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号