最新微机原理与应用第七章PPT课件.ppt
《最新微机原理与应用第七章PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机原理与应用第七章PPT课件.ppt(83页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着一把,忽闪忽闪个不停,嘴里叨叨着“怎么这么热怎么这么热”,于是三五成群,聚在大树,于是三五成群,聚在大树下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩
2、子们却在周下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到围跑跑跳跳,热得满头大汗,不时听到“强子,别跑了,快来我给你扇扇强子,别跑了,快来我给你扇扇”。孩。孩子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,母亲总是,好似生气的样子,边扇边训,“你看热的,跑什么?你看热的,跑什么?”此时这把蒲扇,此时这把蒲扇,是那么凉快,那么的温馨幸福,有母亲的味道!蒲扇是中国传统工艺品,在是那么凉快,那么的温馨幸福,有母亲的味
3、道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的半个人
4、生的轨迹,携带着特有的念想,一年年,一天天,流向长也走过了我们的半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧道,袅长的时间隧道,袅微机原理与应用第七章汇编程序:用来把汇编语言编写的程序自动翻译成目的汇编程序:用来把汇编语言编写的程序自动翻译成目的 程序的软件程序的软件标号名标号名伪指令伪指令操作数操作数;注释;注释,7.1.1 伪指令语句格式伪指令语句格式没有冒号!没有冒号!常量名常量名变量名变量名过程名过程名结构名结构名记录名等记录名等常数常数字符串字符串常量名常量名变量名变量名标号标号专用符号(如专用符号(如BYTE、FAR)内存数据定义伪指令内存数据定义伪指令用于数
5、字表达式:用于数字表达式:MOV AX,4*1024汇编后的形式为汇编后的形式为:MOV AX,4096 用于地址表达式用于地址表达式,例例:LEA SI,TAB+3若若TAB的偏移地址为的偏移地址为1000H,则汇编后的形式为:,则汇编后的形式为:LEA SI,1003H 逻辑运算符只能用于数字表达式中。逻辑运算符只能用于数字表达式中。例:例:MOVCL,36H AND 0FH 经汇编后:经汇编后:MOV CL,06H注意,不要把逻辑运算符与逻辑运算指令混淆:注意,不要把逻辑运算符与逻辑运算指令混淆:例:例:AND AX,3FC0H AND 0FF00H 汇编后源操作数被翻译为:汇编后源操作
6、数被翻译为:3F00H,所以上述指,所以上述指令与令与AND AX,3F00H等价。等价。关系运算的结果是一个逻辑值:关系运算的结果是一个逻辑值:真真或或假假 关系为关系为真真,结果为全结果为全1 关系为关系为假假,结果为全结果为全0例:例:MOV BX,PORT GT 300H 若若PORT的值大于的值大于300H,则汇编后为:则汇编后为:MOV BX,0FFFFH 否则汇编后为:否则汇编后为:MOV BX,0 分析运算符(数值回送操作符):分析运算符(数值回送操作符):SEG(计算段基址)(计算段基址)OFFSET(计算偏移地址)(计算偏移地址)TYPE(计算符号类型值(计算符号类型值;P
7、157)SIZE(计算符号名分配的字节数)(计算符号名分配的字节数)(=TYPE*LENGTH)LENGTH(计算符号名分配的数)(计算符号名分配的数)例例2:把:把VARW的偏移地址送的偏移地址送BX MOV BX,OFFSET VARW例例3:假设:假设VARW变量是字变量,把变量是字变量,把VARW的类型值送的类型值送AL MOV AL,TYPE VARW ;AL=2例例1:把:把VARW所在段的段值送所在段的段值送AX MOV AX,SEG VARW变量名变量名SEG:取变量:取变量/标号的段地址标号的段地址OFFSET:取变量:取变量/标号的偏移地址标号的偏移地址例:例:VAR DB
8、 12H MOV BX,OFFSET VAR;取变量;取变量VAR的偏移地址的偏移地址 MOV AX,SEG VAR ;取变量;取变量VAR的段地址的段地址注意,以下指令的异同:注意,以下指令的异同:MOV BX,OFFSET VAR LEA BX,VAROFFSET只能取静态的偏移地址;只能取静态的偏移地址;LEA指令即可取静态的偏移地址,也可取动态的偏移地址。指令即可取静态的偏移地址,也可取动态的偏移地址。TYPE 取变量的类型(取变量的类型(1,2,4)LENGTH 取所定义变量的长度取所定义变量的长度 (即变量中元素的个数)(即变量中元素的个数)SIZE 取所定义存储区的字节数取所定义
9、存储区的字节数 (=TYPE*LENGTH)例:例:VAR DW 1,2,3,4,5 则则 TYPE VAR=2 LENGTH VAR=5 SIZE VAR =10执行执行:MOV CX,SIZE VAR ;(CX)=10 组合运算符(属性操作符)组合运算符(属性操作符)定义符号名为新类型定义符号名为新类型PTR格式:格式:PTR 功能:用于指定或临时改变变量或标号的类型功能:用于指定或临时改变变量或标号的类型例:例:MOV WORD PTR SI,1 ;指明字类型;指明字类型指定新类型指定新类型THIS格式:格式:THIS 功能:为某个符号名建立新类型功能:为某个符号名建立新类型例:例:LA
10、BC EQU THIS BYTE MOV LABC,AL执行后执行后SI=01SI+1=00用来指定地址操作数的类型。用来指定地址操作数的类型。格式:格式:PTR 类型类型BYTE,WORD,DWORD,NEAR,FARBYTE、WORD、DWORD 用于描述数据存储单元用于描述数据存储单元(变量变量)地址地址NEAR、FAR 用于描述转移、调用的目的地址用于描述转移、调用的目的地址例例6):MOVBYTE PTRDI,0;字节类型字节类型 MOVWORD PTRDI,0;字类型字类型 MOVDI,0B5H ;类型不定类型不定PTR也可用来进行强制类型转换也可用来进行强制类型转换例:例:STR
11、1 DW 1234H ;STR1定义为字类型定义为字类型 MOVAX,STR1 ;合法合法 MOVAL,STR1 ;非法非法 MOV AL,BYTE PTR STR1;合法合法 分离运算符分离运算符LOW 取低字节取低字节 格式:格式:LOW HIGH 取高字节取高字节 格式:格式:HIGH 例:设例:设SSY=2050H MOV AL,LOW 3080H ;AL=80H MOV AH,HIGH SSY ;AH=20 MOV CL,LOW 3A4BH;CL=4BH 汇编运算符的优先级汇编运算符的优先级括号括号LENGTH、SIZEPTR、OFFSET、.HIGH、LOW*、/、MOD、SHL、
12、SHR+、-EQ、NE、LT、LE、GT、GENOTANDOR、XOR1.符号定义伪指令(赋值语句)符号定义伪指令(赋值语句)(1)格式:格式:EQU 功能:用符号来代表表达式的内容功能:用符号来代表表达式的内容 等价语句等价语句EQU表达式可以是常表达式可以是常数、数值表达式、数、数值表达式、字符串、存储器字符串、存储器符号等符号等例:例:COUNT EQU 100 ;符号;符号COUNT代表常数代表常数100 BUFF EQU 4*COUNT ;BUFF代表代表400 HELLO EQU “How are you!”;HELLO代表代表How are you VARW EQU THIS W
13、ORD ;变量;变量VARW的类型是字的类型是字 注意:等价语句的符号名注意:等价语句的符号名不能被重新赋值不能被重新赋值 等号语句等号语句=格式:格式:=功能:用符号来代表表达式的数值功能:用符号来代表表达式的数值数值表达式数值表达式例:例:ABCD=100 YY =20+300/4 ABCD=2*ABCD+1可以重新赋值可以重新赋值例:例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST =BYTE PTRSI+BP GOTO =JMP MOV AX,TEN MOV CX,COUNT ADD DIST,FIVE DIST=WORD PTRSI+BP+1 ADD
14、 DIST,AX GOTO LABEL 先定义先定义后引用后引用 字节定义语句字节定义语句DB格式:格式:名字名字 DB 功能:表达式值或项表中的每一项是一个功能:表达式值或项表中的每一项是一个字节字节数,数,它们从符号名地址开始按字节连续存放。它们从符号名地址开始按字节连续存放。例:例:COUNT DB 100 DB 0DH,0AH,VARW DB?,?,6,?,?,?,?低低0A2406 0D64COUNTVARW高高可以使用重复操作符可以使用重复操作符DUP如:如:BUFFER DB 8 DUP(0)符号地址符号地址DUP可以嵌套如:可以嵌套如:ARRAY DB 100 DUP(0,2
15、DUP(1,2),),3)字字定义语句定义语句DW格式:格式:名字名字 DW 功能:表达式值或项表中的每一项是一个功能:表达式值或项表中的每一项是一个字字数,数,它们从符号名地址开始按它们从符号名地址开始按字字连续存放。连续存放。例:例:FLAG DW 2FCDH,24H DW?2400 2FCDFLAG低低高高汇编后对应的存储区域分配情况汇编后对应的存储区域分配情况 四字节定义语句四字节定义语句DD格式:格式:名字名字 DD 功能:表达式值或项表中的每一项是四个字节数,它们功能:表达式值或项表中的每一项是四个字节数,它们 从符号名地址开始按四字节从小地址连续存放。从符号名地址开始按四字节从小
16、地址连续存放。格式:格式:名字名字 DQ 功能:表达式值或项表中的每一项是八个字节数,它们功能:表达式值或项表中的每一项是八个字节数,它们 从符号名地址开始按八字节从小地址连续存放。从符号名地址开始按八字节从小地址连续存放。八字节定义语句八字节定义语句DQ 10字节定义指令字节定义指令DT例例1:DSEG1 SEGMENT DATA_B DB 10,5,10H DATA_W DW 100H,-4 DATA_D DD 0FFFBHDSEG1 ENDS汇编后的内存分配情况汇编后的内存分配情况如右图所示。如右图所示。05H10H00H01HFCHFFHFBHFFH00H00H0AHDSEG1:DAT
17、A_BDATA_BDATA_WDATA_WDATA_DDATA_D10105 510H10H100H100H-4 40FFFBH0FFFBH例例2 2:操作数可以是字符串,例如:操作数可以是字符串,例如STR DBHELLO汇编后的情况如图:汇编后的情况如图:STRHELLO注意下面两个定义的不同之处:注意下面两个定义的不同之处:X DBAB;41H在低字节,在低字节,42H在高字节在高字节 Y DW AB ;42H在低字节,在低字节,41H在高字节在高字节48H45H4CH4CH4FH41H42H42H41HXY例例3:TABLE DB 10 DUP(?)BUFFER DW TABLE,$+
18、3设设TABLE的偏移地址为的偏移地址为0080H,则汇编后如下图所则汇编后如下图所示:示:BUFFER0080H80HTABLE008AH008BH008CH008DH008EH.8FH00H00H0089H10 Bytes程序计数器程序计数器$程序计数器程序计数器$段定义的一般格式:段定义的一般格式:SEGMENT 定位方式定位方式连接方式连接方式类型名类型名 ENDS段开始语句段开始语句段结束语句段结束语句例:一个简单的数据段例:一个简单的数据段 DSEG SEGMENT BUFFER DB 8 DUP(0)DSEG ENDS开始的段名与结开始的段名与结束的段名必须相束的段名必须相同,段
19、的长度不同,段的长度不能超过能超过64KB,SEGMENT后面后面的参数是可选的的参数是可选的注意:定位方式定位方式(定位类型)(定位类型)书书(P162)定位类型指出了对当前段起始地址的要求,有定位类型指出了对当前段起始地址的要求,有4个选项个选项PAGE 指定起始地址的低指定起始地址的低8位是位是0,即其值能被,即其值能被256整除(称页边界)整除(称页边界)PARA 指定起始地址的低指定起始地址的低4为是为是0,即其值能被,即其值能被16整除(整除(称段边界称段边界)WORD指定起始地址的最低位是指定起始地址的最低位是0,即其值能被,即其值能被2整除(称为字边界)整除(称为字边界)BYT
20、E 指定起始地址是任意值指定起始地址是任意值缺省定位缺省定位定位类型是用来确定程序段与程序段之间的衔接,如定位类型是用来确定程序段与程序段之间的衔接,如BYTE 使得当前段紧接前一段,而使得当前段紧接前一段,而PAGE可能导致最大的段间隔可能导致最大的段间隔 连接方式连接方式(组合类型)(组合类型)连接方式告诉连接程序本段可按某种方式连接连接方式告诉连接程序本段可按某种方式连接PUBLIC告诉连接程序本段与其它同名同类别告诉连接程序本段与其它同名同类别 的段连接起来,公用一个起始点。的段连接起来,公用一个起始点。STACK 表示是堆栈段,连接方式同上。表示是堆栈段,连接方式同上。NONE 表示
21、本段不与任何段连接。表示本段不与任何段连接。COMMON表示本段与同名同类别的段共用同一段地址,表示本段与同名同类别的段共用同一段地址,即同名同类段相重叠。即同名同类段相重叠。MEMORY本段连接时定位在所有段之上,即高地址处。本段连接时定位在所有段之上,即高地址处。AT 表达式表达式表示本段定位在表达式值指定的段地址处。表示本段定位在表达式值指定的段地址处。隐含连接方式隐含连接方式一个源程序至少有一个堆栈段一个源程序至少有一个堆栈段例例:连接方式连接方式BmaxC(S)B(C)A(P)B(C)AC(S)A(P)B(C)AC2C1A1A2PCS模块模块1模块模块2模块模块1N 类别名类别名 类
22、别名是由程序员指定的字符串,没有给出类别时,类别名是由程序员指定的字符串,没有给出类别时,这个段的类别就为空。这个段的类别就为空。例例1:某个源程序:某个源程序SSEG SEGMENT PARA STACK DB 1024 DUP(?)(?)SSEG ENDS;DSEG SEGMENT PARA COMMONMESS DB HELLO,0DH,0AH,DSEG ENDS;CSEG SEGMENT PARA PUBLICCSEG ENDS END START例例2:类别类别用单引号括起来的字符串。所有同类别的段被安排在连续用单引号括起来的字符串。所有同类别的段被安排在连续的存储区域中。的存储区域
23、中。如:如:给出类别时,给出类别时,在模块在模块1中有段定义:中有段定义:seg1 SEGMENT PARA STACK stack seg1 ENDS 在模块在模块2中有段定义:中有段定义:seg2 SEGMENT PARA STACK stack seg2 ENDS则连接时这两个段被安排在一起。则连接时这两个段被安排在一起。PUBLICCODEPUBLICCODECOMMONDATACOMMONDATAAT 2000HAT 8000H格式:格式:ASSUME 段寄存器:段定义名段寄存器:段定义名1,段寄存器:段定义名,段寄存器:段定义名2,功能:告诉汇编程序在汇编时,段寄存器的符号基址功能
24、:告诉汇编程序在汇编时,段寄存器的符号基址例:例:DSEG1 SEGMENT VARW DW 12 DSEG1 ENDS ;DSEG2 SEGMENT XXX DW 0 YYY DW 0 DSEG2 ENDS ;CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG1,ES:DSEG2 MOV AX,DSEG1 MOV DS,AX MOV AX,DSEG2 MOV ES,AX CSEG ENDS 在代码段中,还必须明确段和段寄存器的关系,这由ASSUME语句来指定。如 ASSUME CS:code,DS:data,ES:data 语句中的code和data为段名。这个语句说明:
25、1.CS将指向名字为code的代码段 2.DS和ES将指向名字为data的数据段但要注意但要注意,ASSUME伪指令只是告知汇编程序有伪指令只是告知汇编程序有关段寄存器与段的关系关段寄存器与段的关系,并没有给段寄存器赋予实并没有给段寄存器赋予实际的初值。故下面的语句际的初值。故下面的语句 MOVAX,DATA MOVDS,AX MOVES,AX将段基址装入段寄存器将段基址装入段寄存器。如果程序中用到堆栈段,。如果程序中用到堆栈段,则则SS也需装入也需装入实际的初值实际的初值。代码段基地址代码段基地址不需要程序员装入不需要程序员装入CS寄存器,而由寄存器,而由DOS负责装入。负责装入。格式:格式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 微机 原理 应用 第七 PPT 课件
限制150内