【大学课件】微机原理第4章汇编语言程序设计ppt课件_第1页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第2页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第3页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第4页
【大学课件】微机原理第4章汇编语言程序设计ppt课件_第5页
已阅读5页,还剩154页未读 继续免费阅读

下载本文档

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

文档简介

第 4章 汇编语言程序设计4.1 汇编语言语法4.2 汇编语言程序实现4.3 汇编语言程序设计方法及应用4.4 汇编语言程序设计举例微机原理4.1 汇编语言语法【 例题 4.1】 实现: 123 + 456sum 的源程序 CODE SEGMENT ; 语句 6ASSUME CS: CODE, DS: DATAMAIN PROC FAR ; 语句 8START: PUSH DS ; 语句 9. ;RET ; 语句 17MAIN ENDP ; 语句 18CODE ENDS ; 语句 19数据段代码段DATA SEGMENT ; 语句 1A DW 123 ; 语句 2B DW 456 ; 语句 3SUM DW ? ; 语句 4DATA ENDS ; 语句 5END START ; 语句 20 名字 指令 /伪指令 操作数 1,操作数 2 段 = 语句1. 源程序组成 源程序 = 段段 :数据段、堆栈段、附加段、码段语句 : 指令性语句 ,由 CPU执行,如:语句 8语句 17。 指示性语句 ,指示汇编,如语句 1、 5、 6、 19、 20。名字 :段 名,如: DATA、 CODE变量名,如: A、 B、 SUM过程名,如: MAIN标号名,如: START汇编程序构成 暨 本章主要内容 指令性语句 本章涉及各色运算符,用以与数据配合构成操作数 指示性语句 几种起定义作用的伪指令 数据定义伪指令 符号定义伪指令 段定义伪指令1) 组成名字的合法字符有: 字母(不分大小写) ; 数字 0 9; 特殊符号( “ ?” , “ :” , “ ”,“_” ,“ $” )。2) 名字的有效长度小于 31个西文字符。3) 名字以字母开头。4) 不能把保留字用作名字。 2.名字命名规则3.名字属性(1)变量名(2)段名: 该段起始位置的段地址值 段属性: 变量所代表的数据区所在段的段基址 ;偏移量: 变量所代表的数据区首字节所在段内偏移地址 ;类 型: BYTE、 WORD、 DWORD、 DQ、 DT长 度 : 变量所代表的数据区中数据元素的个数。规 模: 变量所代表的数据区中数据所占空间大小,以字节计。 (3)过程名或标号名(4)常量名: 代表一常数段属性 : 过程起始位置或标号处段地址值偏移量 : 过程起始位置或标号处偏移地址值类 型 : NEAR、 FAR用于程序跳转4.1.2 汇编语言伪指令1.数据定义伪指令变量名 数据定义伪指令 操作数 1,操作数 2 DB、 DD、 DW、 DQ、 DT字节、字、双字、 4字、 5字的变量。 (1) 数字常量:十进制、八进制、十六进制、二进制等,缺省形式是十进制;(2) 字符常量,用单引号括起来,被存储的是该字符的 ASCII码;(3) 符号常量,必须是预先已定义的符号;(4) 符号 “ ?” ,表示预留空间,内容不定; (5) DUP, 表示内容重复的数据。具体形式为:次数 DUP(被重复的内容 ) 操作数:【 例 】 D_A DB 10, A , BCD_B DW 1234HD_C DQ 5678HD_A 1041H 42H43HD_B 34H12HD_C 78H56H0 0 000D_C+7 0(1)DB定义的数据,每个数据元素占据 1个存储单元;DW定义的数据,每个数据元素占据 2个存储单元;(2)字数据存储时,低字节存储在低地址单元中,高字节存储在高地址单元中;(3)字符被存放时为它的 ASCII码,例 A 的 ASCII码为 41H;(4)符号地址具有以下关系:D_B = D_A+3D_D = D_B+2 = D_A+6 注:ORG 100HD_E DB 3 DUP(? )EVEND_F DW D_ED_G DB 2 DUP(1,3,4)D_H DW $+2变量 内容 偏移地址D_E ? 100? 101? 10210300H 104D_F 01H 105D_G 1 1063 1074 1081 1093 10A4 10BD_H 0CH 10C01H 10D 下一个存储位置从偶地址开始己定义变量,取该变量偏 移地址代表当前偏移地址2.符号定义伪指令(1) EQU 格式:名字 EQU 表达式 例 :VB EQU 641024 ; VB代表数值表达式的值A EQU 7B EQU A 2 注意:1. 如果表达式中有变量,应在该语句前给出该变量的定义;2. EQU语句不能给某一变量重复定义;3. VB、 A、 B不占用内存(2)等号 =格式:名字 = 表达式 功能 :与 EQU基本相同,区别是它可以对同一个名字重新定义。例 :COUNT = 10MOV AL, COUNT ;COUNT = 5 ; 可重复定义(3)LABEL 格式:变量 /标号 LABEL 类型 功能: 定义变量或标号的类型,而变量或标号的段属性和偏移属性由该语句所处的位置确定。变量的类型有: BYTE、 WORD 、 DWORD 、DQ、 DT; 标号的类型有: NEAR、 FAR。【 例 】 利用 LABEL使同一个数据区有一个以上的类型及相关属性。AREAW LABEL WORD ; AREAW与 AREAB指向相同的数据区, AREAW类型为字,而AREAB类型为字节AREAB DB 100 DUP(? ) MOV AX, 1234HMOV AREAW, AX ; (AREAW) = 1234HMOV BL, AREAB ; BL = 34H 3.段定义伪指令段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS BYTE: B ,即段可以从任何地址开始;WORD: 0B ,即段的起始地址必须为偶地址;PARA: 0000B ,即段从节 (PARAGRAPH)边界开始,每 16个字节为 1小段,所以,其起始地址必为 16的倍数。PAGE: 0000 0000B ,即段从页边界开始,每 256个字节为 1页,所以,其起始地址必为 256的倍数。 定位类型 :说明段的起始地址应有怎样的边界值:组合类型 :说明程序连接时的段合并方法 1 PUBLEC: 将同类别名段组装在一起形成一个逻辑段;2 STACK: 与 PUBLIC一样,只用于堆栈段。 在汇编及连接后,系统自动为 SS及 SP分配值 , 在可执行程序中, SP初值指向栈底 。3 COMMON: 同名段从同一个内存地址开始装入。所以,各个逻辑段将发生覆盖。连接以后,该段长度取决于同名段中最长的那个,而内容有效的是最后装入的那个。4 MEMORY:与 PUBLIC同义,只不过 MEMORY定义的段装在所有同名段的最后。若连接时出现多个 MEMORY, 则最先遇到的段按组合类型 MEMORY处理,其他段组合类型按 PUBLIC处理。5 PRIVATE: 不组合,该段与其它段逻辑上不发生关系,即使同名,各段拥有各自的段基值。 缺省值6 AT exp: 段地址为表达式 exp的值 (长度为 16位 )。此项不能用于代码段。当几个程序模块进行连接时,其中具有相同类别名的段,按出现的先后顺序被装入连续的内存区。没有类别名的段,与其它无类别名的段一起连续装入内存。 类别 :类别的作用是在连接时决定各逻辑段的装入顺序。类别名必须用单引号括起来。ASSUME 段寄存器名 :段名,段寄存器名 :段名 ASSUME: 用于明确段与段寄存器的关系 说明 :1. 该伪指令出现在码段中;2. 本伪指令只是指示各逻辑段使用段寄存器的情况,并没有对段寄存器的内容进行赋值。 DS、 ES的值必须在程序段中用指令语句进行赋值,而 CS、 SS由系统负责设置,程序中也可对 SS 进行赋值,但不允许对 CS赋值。 例: ASSUME DS:DSEG, CS:CSEG, ES:ESEG, SS:SESG例: ASSUME CS:CODE, DS:DATA, ES:DATA【 例 】 按下面要求,写出程序框架1. 数据段从 0E000H开始,其中有 100字节的数组,其类型属性既是字又是字节;2. 堆栈段从小段开始,段组名为 STACK;3. 代码段中指定段寄存器,主程序从 1000H开始,给有关段寄存器赋值;4. 程序结束。DSEG SEGMENT AT 0E000HD_BYTE DB 100 DUP(? )D_WORD EQU WORD PTR D_BYTEDSEG ENDSSSEG SEGMENT PARA STACKDB 200 DUP(?)SSEG ENDSCSEG SEGMENT ORG 1000HASSUME CS:CSEG, DS:DSEG, SS:SSEGMAIN PROC FARXOR AX, AXPUSH AXPUSH DSMOV AX, DSEGMOV DS, AXRETMAIN ENDPCSEG ENDSEND MAIN4.1.3 汇编语句语句格式: 名字 操作 操作数 ;注释 常量、变量和 表达式表达式 组成由常量、变量和 运算符运算符 组成算法运算符 +、 *、 /、 MOD 逻辑 运算符 AND、 OR、 NOT、 XOR 关系运算符 EQ、 NE、 LT、 GT、 LT、 LE、 GE 分析运算符 SEG、 OFFSET、 TYPE、 LENGTH、 SIZE 属性运算符 PTR、 THIS、 SHORT 其 它 LOW、 HIGH 1.算术运算符例 (1)ARRAY DW 1*2+3-4, 56HMOV AX, ARRAY ; 汇编后为: MOV AX, 1(2)MOV AL, 7FH MOD 2 ; 汇编后为: MOV AL, 1(3)MOV AH, 15/4 ; 汇编后为: MOV AH, 32.逻辑运算符例 1:MOV AH, 11110000BMOV AL, NOT AH ; MOV AL, 00001111BMOV BL, AH OR AL ; MOV BL, 11111111BMOV BH, AH XOR AL ; MOV BH, 11111111B例 2: 从端口 86H读取一个字节,高位屏蔽后从端口 6送出。PORT EQU 86HIN AL, PORTAND1 AL, 0FH ; AND1为逻辑指令MOV DX

温馨提示

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

评论

0/150

提交评论