新编6位微型计算机原理及应用李继灿主编

上传人:人*** 文档编号:586458444 上传时间:2024-09-04 格式:PPT 页数:33 大小:429.52KB
返回 下载 相关 举报
新编6位微型计算机原理及应用李继灿主编_第1页
第1页 / 共33页
新编6位微型计算机原理及应用李继灿主编_第2页
第2页 / 共33页
新编6位微型计算机原理及应用李继灿主编_第3页
第3页 / 共33页
新编6位微型计算机原理及应用李继灿主编_第4页
第4页 / 共33页
新编6位微型计算机原理及应用李继灿主编_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《新编6位微型计算机原理及应用李继灿主编》由会员分享,可在线阅读,更多相关《新编6位微型计算机原理及应用李继灿主编(33页珍藏版)》请在金锄头文库上搜索。

1、优秀精品课件文档资料 4 4.1 .1 汇编语言语法规则汇编语言语法规则一一. .概述概述1.1.可执行文件的生成可执行文件的生成 编辑编辑编编辑辑汇编源程序汇编源程序.ASM文件文件调编辑程序调编辑程序如如:EDIT.EXEQEDIT.EXE第四章第四章宏汇编语言宏汇编语言 编译编译.ASM文件文件汇汇编编.OBJ文件文件调汇编程序调汇编程序如如:TASM.EXE 链接链接链链接接.OBJ文件文件库文件库文件可执行文件可执行文件.EXE.EXE .COM .COM调链接程序调链接程序如如:TLINK.EXE2.2.源程序中的语句类型源程序中的语句类型 一个完整的源程序应包含一个完整的源程序应

2、包含2 2类语句类语句: : 符号指令、汇编伪指令符号指令、汇编伪指令( (伪语句伪语句) )标号标号:符号指令符号指令符号指令符号指令变量名变量名伪指令伪指令伪指令伪指令标标号号名名、变变量量名名、段段名名、过过程程名名命命名名规规则则: :以以字母开头字母开头, ,后跟字母、数字后跟字母、数字长度长度3131个字符个字符H符号指令符号指令: :经汇编后经汇编后, ,其目标指令通知其目标指令通知CPUCPU进行什么进行什么操作操作H伪指令伪指令: :为汇编程序为汇编程序, ,链接程序提供汇编链接信息链接程序提供汇编链接信息此处无冒号此处无冒号二二. .常用的伪指令常用的伪指令1.1.字节字义

3、伪指令字节字义伪指令 变量名变量名 DB DB 一串用逗号间隔的单字节数一串用逗号间隔的单字节数 说明说明: :v DB DB Define Byte Define Byte 的缩写的缩写, ,“定义字节定义字节”。v ? ? 随机数随机数, Dup , Dup Duplicate(Duplicate(重复重复) )v 3 Dup(?) 3 Dup(?) 代表代表3 3个用逗号间隔的随机数个用逗号间隔的随机数v 5 Dup(5 Dup(A)A)代表代表5 5个用逗号间隔的个用逗号间隔的A A的的ASCASC码码如如: : N1DB12H,64,-1,3*3DB01010101B,A,BDB0A

4、6H,HELLON2DB?,?,?;与下条等价与下条等价N2DB3DUP(?)功能功能: :H通知汇编程序把通知汇编程序把DBDB后跟的单字后跟的单字 节数节数, ,依次存入从变量依次存入从变量(如如N1)N1) 开始的单元开始的单元, ,负数用补码表示负数用补码表示, , 单引号中的字符翻译成单引号中的字符翻译成ASCASC码。码。 如如: : N1DB12H,64,-1,3*3DB01010101B,A,BDB0A6H,HELLON2DB?,?,?;与下条等价与下条等价N2DB3DUP(?)汇编后汇编后12H40HFFH09H55H41H42HA6H48H45H4CH4CH4FHXXXXX

5、XN1:N2:如如: : N1DB12H,64,-1,3*3DB01010101B,A,BDB0A6H,HELLON2DB?,?,?;与下条等价与下条等价N2DB3DUP(?)功能功能: : 用用DBDB定定义义的的这这些些内内存存单单元元(N1(N1 N1+12,N1+12, N2 N2 N2+2)N2+2)的的属属性性均均为为“字字节型节型”。汇编后汇编后12H40HFFH09H55H41H42HA6H48H45H4CH4CH4FHXXXXXXN1:N2:N1+12:N2+2:2.2.字定义伪指令字定义伪指令 变量名变量名 DWDW 一串用逗号间隔的双字节数一串用逗号间隔的双字节数如如:

6、:WNUMDW1234H,12,AB,CDW?,?DW2DUP(?)说明说明: : DW DW Define Word Define Word “字定义字定义” ? ? 双字节随机数双字节随机数 单引号中只能是一个或两个字符单引号中只能是一个或两个字符 功能功能: : 通知汇编程序把通知汇编程序把DWDW后跟的双字节数后跟的双字节数, , 依次存入从变量名开始的单元依次存入从变量名开始的单元, ,每一个数每一个数 占占2 2个字节个字节, ,低位字节低位字节低址单元低址单元, , 高位字节高位字节相邻的高址单元。相邻的高址单元。功能功能: : 用用DWDW定定义义的的这这些些单单元元的的属属性

7、性都都是是“字字型型”, , 如如上上例例, , WNUM WNUM WNUM+11WNUM+11这这1212个个单元的属性都是单元的属性都是“字型字型”。汇编后汇编后WNUM:34H12H0CH0042H41H43H00XXXXXXXXWNUM+11:功能功能: : 通知汇编程序把通知汇编程序把DDDD后跟的数存入变量名开始后跟的数存入变量名开始的单元的单元, , 每一个数占每一个数占4 4个字节个字节, ,低位字节低位字节低址低址单元单元, ,高位字节高位字节高址单元。高址单元。 用用DDDD定义的这些单元的属性都是定义的这些单元的属性都是“双字型双字型”, ,上例上例DNUMDNUM D

8、NUM+3DNUM+3单元单元, ,这些单元都是双字型单这些单元都是双字型单元元3. 3. 双字定义伪指令双字定义伪指令 变量名变量名 DDDD 一串用逗号间隔的一串用逗号间隔的4 4字节数字节数 如如: : DNUMDD12345678H汇编后汇编后DNUM:34H78H56H12H5. 5. 等值伪指令等值伪指令 符号常数符号常数 EQUEQU 表达式表达式 如如: : NUMEQU33 功能功能: : 定义符号常数定义符号常数NUMNUM的值为的值为33 33 6. 6. 等号伪指令等号伪指令 符号常数符号常数= =表达式表达式 如如: : NUM=33 功能功能: :定义符号常数定义符

9、号常数NUMNUM的值为的值为33 33 4. 4. 多字节定义伪指令多字节定义伪指令 变量名变量名 DFDF 一串用逗号间隔的一串用逗号间隔的6 6字节数字节数 变量名变量名 DQDQ 一串用逗号间隔的一串用逗号间隔的8 8字节数字节数 变量名变量名 DTDT 一串用逗号间隔的一串用逗号间隔的1010字节数字节数功能功能: : 通知汇编程序为通知汇编程序为DF/DQ/DTDF/DQ/DT后跟的每一个数,后跟的每一个数,分配分配 6/8/106/8/10个单元。个单元。 三三. . 常用运算符常用运算符 1. 1. 算术运算符算术运算符: +, -, *, /: +, -, *, / 2. 2

10、. 关系运算符关系运算符: : EQ( EQ(等于等于), NE(), NE(不等于不等于), GT(), GT(大于大于),LT(),LT(小小于于), GE(), GE(大于或等于大于或等于) )例如例如: : NUMEQU33MOVAL,NUM;该指令与下条指令等价该指令与下条指令等价 MOVAL,33区别区别: : 用用EQUEQU定义的符号常数定义的符号常数, ,其值在后继语句中不能其值在后继语句中不能更改更改; ;用用“= =”定义的符号常数定义的符号常数, ,其值在后继语句其值在后继语句中可以重新定义中可以重新定义 应用应用: : $ $运算符紧跟在运算符紧跟在 DBDB、DWD

11、W、DDDD伪指令之后伪指令之后, ,统统计字符串的长度。计字符串的长度。 例如数据段有例如数据段有: :BUFDBTHEQUICKBROWNFOX;字符字符串长度串长度19LLLEQU$-BUF 汇编后汇编后 符号常数符号常数LLLLLL的值即为的值即为19193. $3. $运算符运算符 汇编程序对源程序是逐行汇编的汇编程序对源程序是逐行汇编的,$,$运算符可运算符可以返回以返回 汇编计数器的当前值。汇编计数器的当前值。如如: : MOVAX,SEGDATAMOVDS,AX设设“DATADATA”是数据段的段名是数据段的段名, ,上述两条指令算出上述两条指令算出数据段的段基址数据段的段基址

12、, ,先赋给先赋给AX,AX,再转赋再转赋DSDS。 5.OFFSET5.OFFSET运算符运算符 格式:格式:OFFSET OFFSET 变量名或标号名变量名或标号名 功功能能:算算出出某某个个变变量量或或标标号号名名所所在在单单元元的的偏移地址(有效地址)。偏移地址(有效地址)。4. SEG4. SEG运算符运算符 格式格式: SEG : SEG 段名或变量名或标号名段名或变量名或标号名 功能功能: : 计算某一逻辑段的段基址计算某一逻辑段的段基址 设以设以“DATADATA”为段名的数据段中,存在为段名的数据段中,存在 BUFDB12,34,56代码段:代码段: MOVAX,SEGDAT

13、AMOVDS,AXMOVBX,OFFSETBUFMOVAL,BX;AL=12以下两条指令等价的:以下两条指令等价的: MOVBX,OFFSETBUFLEABX,BUF6.PTRPTR运算符运算符 格式格式: : 类型说明符类型说明符 PTR PTR 地址表达式地址表达式 功能功能: : 在在本条指令本条指令中中临时修改临时修改地址表达式的属性地址表达式的属性 内存单元内存单元5 5种寻址方式种寻址方式子程序的名称子程序的名称 BYTE BYTE(字节)(字节) WORDWORD(字)(字) DWORDDWORD(双字)(双字) FARFAR(远)(远) NEARNEAR(近)(近)举例:举例:

14、设数据段有设数据段有: BUFDB11,22,33,44WBUFDW?,?,?XXDB0FFH,0YYDB0FFH,0FFH,0,0ZZDB0FFH,0FFH,0FFH,0代码段:代码段:MOVAX,BUFMOVAL,BUFMOVAX,WORDPTRBUF;AH=22,AL=11MOVBUF,12HMOVBUF,1234HMOVWORDPTRBUF,1234H;BUF单元为单元为34H,BUF+1单元为单元为12H汇编后汇编后BUF:11223344XXXXXXXXFFH0FFHFFHXX:WBUF:YY:举例:举例:设数据段有设数据段有: BUFDB11,22,33,44WBUFDW?,?,

15、?XXDB0FFH,0YYDB0FFH,0FFH,0,0ZZDB0FFH,0FFH,0FFH,0MOVBX,OFFSETXXMOVSI,OFFSETYY MOVDI,OFFSETZZMOVBX,12HMOVBYTEPTRBX,12H;XX单元为单元为12HMOVWORDPTRBX,12H;XX单元为单元为12H,XX+1单元为单元为0汇编后汇编后BUF:11223344XXXXXXXXFFH0FFHFFHXX:WBUF:YY:举例:举例:设数据段有:设数据段有: BUFDB11,22,33,44WBUFDW?,?,?XXDB0FFH,0YYDB0FFH,0FFH,0,0ZZDB0FFH,0FF

16、H,0FFH,0MOVSI,1234HMOVWORDPTRSI,1234HMOVAX,BXMOVAL,SIMOVDI,AXINCBXINCSIINCDIINCBYTEPTRBX;XX单元单元=0INCWORDPTRSI;YY,YY+1单元单元=0INCDWORDPTRDI;ZZZZ+2单元单元=0,ZZ+3=1汇编后汇编后BUF:11223344XXXXXXXXFFH0FFHFFHXX:WBUF:YY:7.7.方括号方括号用用方方括括号号括括起起来来的的地地址址表表达达式式是是访访问问内内存存操操作作数数常常用用的的寻寻址址方方式式,方方括括号号的的另另一一用用途途是是标注数组元素的下标,下标

17、从标注数组元素的下标,下标从0 0开始。开始。数组下标数组下标变量名就变量名就是数组名是数组名代码段:代码段:MOVAL,BUF3;AL=44 BUFDB11,22,33,44WBUFDW?,?,?XXDB0FFH,0YYDB0FFH,0FFH,0,0ZZDB0FFH,0FFH,0FFH,0如上例数据段如上例数据段:一一.源程序的结构源程序的结构一个完整的源程序,在结构上必须一个完整的源程序,在结构上必须: 用段定义语句定义每一个逻辑段用段定义语句定义每一个逻辑段 用过程定义语句定义每一个过程用过程定义语句定义每一个过程 用用ASSUME语句说明段约定语句说明段约定 用汇编结束语句说明源程序结

18、束用汇编结束语句说明源程序结束 程序结束应能安全返回程序结束应能安全返回DOS把控制权还给操把控制权还给操作系统作系统4.2宏汇编的基本语句宏汇编的基本语句二二.基本语句基本语句1.方式选择伪语句方式选择伪语句格式之一:格式之一:486 功能:通知汇编程序将以下指令汇编成功能:通知汇编程序将以下指令汇编成486的的机器指令。机器指令。 应用:源程序第一条指令。应用:源程序第一条指令。2.段定义语句段定义语句段段名名SEGMENT定定位位参参数数链链接接参参数数分分类类名名段段长度长度段体段体段名段名ENDS说明:说明:段名以字母开头,命名规则同变量名、标号名,段名以字母开头,命名规则同变量名、

19、标号名,段名不说明段体的性质。段名不说明段体的性质。SEGMENT/ENDS是逻辑段的定界语句。是逻辑段的定界语句。定位参数通知链接程序:逻辑段的目标代码在存定位参数通知链接程序:逻辑段的目标代码在存储器中如何存储,有储器中如何存储,有4种描述:种描述: BYTE可以从任意地址存放可以从任意地址存放 WORD从偶地址开始存放从偶地址开始存放 PARA(或缺省或缺省)从能被从能被16整除的地址开始存放整除的地址开始存放 PAGE从能被从能被256整除的地址开始存放整除的地址开始存放链接参数有链接参数有6种描述种描述: PUBLIC通知链接程序,通知链接程序,把不同模块中把不同模块中,具有,具有P

20、UBLIC属性的属性的同名段同名段,在满足定位参数的要求,在满足定位参数的要求下,按指定的链接顺序链接成一个逻辑段。下,按指定的链接顺序链接成一个逻辑段。 MEMORY与与PBULIC类似。类似。 COMMON通知链接程序把不同模块中都具有通知链接程序把不同模块中都具有COMMON属性的同名段,根据指定的链接顺序,属性的同名段,根据指定的链接顺序,按照按照“覆盖覆盖”方式,组合成一个逻辑段。方式,组合成一个逻辑段。组合之后的逻辑段体积等于链接之前具有组合之后的逻辑段体积等于链接之前具有COMMON属性的同名段中的最大的段体。属性的同名段中的最大的段体。 STACK具有具有STACK属性的段是堆

21、栈段,链接程属性的段是堆栈段,链接程序将把同名堆栈段组合成一个大的堆栈段。序将把同名堆栈段组合成一个大的堆栈段。 AT表达式表达式如:如:DATASEGMENTAT40HORG17HKEYFLAGDB?DATAENDS表明逻辑段段基址为表明逻辑段段基址为40H,KEYFLAG的偏移地址的偏移地址为为17H。注意注意:因为程序在内存中的位置是由操作系统分配的,用户因为程序在内存中的位置是由操作系统分配的,用户程序不能指定逻辑段的段基址。程序不能指定逻辑段的段基址。严格地讲,严格地讲,“AT表达式表达式”这一属性是供操作系统程序这一属性是供操作系统程序使用的。使用的。 缺省缺省表明该段是独立的,链

22、接程序对于具有缺省链表明该段是独立的,链接程序对于具有缺省链接参数的同名段,不进行组合。接参数的同名段,不进行组合。 不同模块同名段链接参数的功能示意图不同模块同名段链接参数的功能示意图A段段(PUBLIC)段体段体A1主模块主模块子模块子模块CPSPUBLICCOMMONSTACKC段段(STACK)段体段体C1A段段(PUBLIC)段体段体A2C段段(STACK)段体段体C2B段段(COMMON)段体段体B1B段段(COMMON)段体段体B2段体段体A1段体段体A2段体段体B2段体段体C1段体段体C2分类名分类名分类名的名字由程序员命名,通常数据段分类名为分类名的名字由程序员命名,通常数据

23、段分类名为DATA,代码段分类名为,代码段分类名为CODE,通知链接程序,通知链接程序,把把分类名分类名相同的同名逻辑段放在邻近的内存区。相同的同名逻辑段放在邻近的内存区。段长度段长度:USE16表示该段体积最大表示该段体积最大64K,单元偏移地址为,单元偏移地址为16位,采用位,采用16位寻址。位寻址。USE32表示该段体积最大表示该段体积最大4G,单元偏移地址为,单元偏移地址为32位,采用位,采用32位寻址。位寻址。在实模式下运行在实模式下运行,应选用应选用USE16。逻辑段有逻辑段有4类属性参数,每一参数又有多种选择,怎样类属性参数,每一参数又有多种选择,怎样使用?使用? 在实模式环境下

24、,各逻辑段应采用在实模式环境下,各逻辑段应采用16位寻址,所以段长位寻址,所以段长度选用度选用USE16。 堆栈段选用堆栈段选用STACK为链接参数,为链接参数,STACK为分类名,为分类名,由于选用由于选用STACK为链接参数,汇编后为链接参数,汇编后DOS将自动给将自动给SS:SP赋值。赋值。 只有在模块化程序中,才有必要考虑链接参数的选择。只有在模块化程序中,才有必要考虑链接参数的选择。在单一模块程序中,定位参数,链接参数,在单一模块程序中,定位参数,链接参数,分类名分类名均均选用选用“缺省缺省”表示即可。表示即可。段参数应用小结段参数应用小结3.段约定语句段约定语句ASSUME段寄存器

25、:段名,段寄存器:段名,段寄存器:段名,段寄存器:段名如如:ASSUMECS:CODE,DS:DATA 功能功能:通知汇编程序通知汇编程序以以CODE为段名的是代码段,对为段名的是代码段,对CODE段寻址:段寻址:CS*24以以DATA为段名的是数据段,对为段名的是数据段,对DATA段寻址:段寻址:DS*24说明说明: ASSUME语句通常是放在代码段的第一条语句。语句通常是放在代码段的第一条语句。 ASSUME语句不能完成对段寄存器的赋值(没有赋语句不能完成对段寄存器的赋值(没有赋值功能)。值功能)。对段寄存器赋值有对段寄存器赋值有2种方法:种方法: 用用SEG运算符运算符如如:MOVAX,

26、SEGDATAMOVDS,AX 把段名赋给段寄存器把段名赋给段寄存器如:如:MOVAX,DATAMOVDS,AX重申重申:CS:IP由由DOS自动赋初值。自动赋初值。SS:SS初值由初值由DOS自动赋给,或由程序员赋给。自动赋给,或由程序员赋给。说明说明: 过程名即子程序名,命名规则同变量名。过程名即子程序名,命名规则同变量名。 PROC/ENDP是过程的定界语句。是过程的定界语句。 汇编后过程名就是子程序第一条指令的入口地址。汇编后过程名就是子程序第一条指令的入口地址。 属性有两种描述属性有两种描述:NEAR近近FAR远远4.过程定义语句过程定义语句过程名过程名PROC属性属性过程实体过程实

27、体RET过程名过程名ENDP5.定位语句定位语句ORG表达式表达式如:如:ORG100HBEG:JMPSTART 功能:定义程序段的起始偏移地址,上例通知汇编功能:定义程序段的起始偏移地址,上例通知汇编程序,指令的目标代码汇编后的偏移地址从程序,指令的目标代码汇编后的偏移地址从100H开开始存放。始存放。 应用:通常在应用:通常在COM格式格式中使用。中使用。6.汇编结束语句汇编结束语句格式格式1:END启动地址标号启动地址标号如:如:ENDABC 功能:通知汇编程序源程序到此结束,程序从功能:通知汇编程序源程序到此结束,程序从标号为标号为“ABC”的那条指令依次执行。的那条指令依次执行。 说明:该语句为单一模块程序或模块化程序中说明:该语句为单一模块程序或模块化程序中主模块程序的最后一条语句。主模块程序的最后一条语句。格式格式2:END 功能:通知汇编程序源程序到此结束。功能:通知汇编程序源程序到此结束。 应用:该语句为模块化程序中的子模块的最后一条应用:该语句为模块化程序中的子模块的最后一条语句语句。7.返回返回DOS的指令(最常用)的指令(最常用)调用调用DOS功能中的第功能中的第“4CH”号子程序号子程序MOVAH,4CHINT21H

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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