(14)--4.2 伪指令计算机硬件技术.ppt
《(14)--4.2 伪指令计算机硬件技术.ppt》由会员分享,可在线阅读,更多相关《(14)--4.2 伪指令计算机硬件技术.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言程汇编语言程序设计序设计汇编语言程序设计本章内容:本章内容:n汇编语言概述;汇编语言概述;n伪指令;伪指令;n系统功能调用;系统功能调用;n80868086的工作时序。的工作时序。4.2伪指令包括如下内容:包括如下内容:1.1.段定义伪指令段定义伪指令SEGMENT/ENDSSEGMENT/ENDS2.2.位置计数器位置计数器$和定位伪指令和定位伪指令ORG ORG 3.3.段寻址伪指令段寻址伪指令ASSUMEASSUME4.4.过程定义伪指令过程定义伪指令PROC/ENDPPROC/ENDP5.5.数据定义伪指令与存储器分配数据定义伪指令与存储器分配 6.6.记录与结构定义伪指令(记
2、录与结构定义伪指令(RECORDRECORD、STRUC/ENDSSTRUC/ENDS)7.7.符号定义伪指令(符号定义伪指令(EQUEQU、LABELLABEL)8.8.程序模块定义伪指令(程序模块定义伪指令(NAME/ENDNAME/END、PUBLIC/EXTRNPUBLIC/EXTRN)4.2伪指令伪指令语句n汇编程序并不把它们翻译成机器代码,只是用来指示、引导汇编程序在汇编时做一些操作,它本身不占用存储单元指令语句n汇编程序把它们翻译成机器代码,命令8086执行对应操作。4.2.1段定义伪指令SEGMENT/ENDS1.SEGMENT和ENDS 段名 SEGMENT定位方式组合方式类
3、别名 语句1 语句2 段名 ENDSn 定义方式4.2.1段定义伪指令SEGMENT/ENDS(1)段名n段名是赋予该段的一个名称,SEGMENT与ENDS成对出现,且前面的段名要相同,段名的取法与文件名、标号及变量名等相同。(2)定位方式nLINK程序除完成段与段的联合操作以外,还把联合后得到的各个段互相衔接起来,段与段的衔接方式叫做定位方式,共4种。4.2.1段定义伪指令SEGMENT/ENDS PARA(未定义的):表示段从一个节的边界,即用十六进制数表示地址的最低位为0处开始。BYTE(字节):表示段可从任一地址开始。WORD(字):表示段从地址是一个最低位为0的二进制数开始。PAGE
4、(页):表示段从一个页的边界,即十六进制数表示地址的最低两位均为0处开始。(2)定位方式4.2.1段定义伪指令SEGMENT/ENDS定位类型 起 始 地 址BYTE XXXX XXXX XXXX XXXX XXXX BWORD XXXX XXXX XXXX XXXX XXX0 BPARA XXXX XXXX XXXX XXXX 0000 BPAGE XXXX XXXX XXXX 0000 0000 B X表示可取0或1(2)定位方式4.2.1段定义伪指令SEGMENT/ENDS(3)组合方式n程序不同模块中具有相同性质的段若使用同样的段名,则连接时就会把同名的段按照指定的方式组合起来,组合方
5、式共有6种。NONE(缺省)方式:表示该段与其他模块的段没有任何关系,每段都有自己的基址。这是缺省方式。4.2.1段定义伪指令SEGMENT/ENDS(3)组合方式 STACK方式:连接时把所有STACK方式的同名段连接成一个段,运行时就是SS的装入值,且栈指针SP指向该段的起始地址。PUBLIC方式:表示该段与其他模块中说明为PUBLIC方式的同名段互相组合成一个逻辑段,公用一个段址,运行时装入同一个物理段中。4.2.1段定义伪指令SEGMENT/ENDS(3)组合方式 MEMORY方式:表示该段应定位在所有其他段的上面,若有多个段选用MEMORY,则除第一个之外,其余段均作为COMMON处
6、理。COMMON方式:表示该段与其它模块中所有已说明为COMMON的同名段共享相同的存储区域,即具有相同的段起始地址,共享的长度为模块同名段中最大长度。4.2.1段定义伪指令SEGMENT/ENDS(3)组合方式 AT方式:表示该段按绝对地址定位,其段地址即为其后表达式的值,位移量为0。例:有A,B;C,A,B;A,C共7个段是3个模块中的段,用P,C,S分别代表PUBLIC,COMMON或STACK。组合成4个新段(见下图),新段的长度为被组合在一起的各段长度之和(用PUBLIC和STACK方式时),或是各段中最长段的长度(COMMON方式)。4.2.1段定义伪指令SEGMENT/ENDS(
7、3)组合方式A(P)B(C)C(S)A(P)B(C)AC(S)模块1模块2模块3LINKPCSABCD连接程序的组合处理示意图4.2.1段定义伪指令SEGMENT/ENDS(4)类别名n是一个用单引号括起来的字符串,LINK程序把类别名相同的所有段放在连续的存储区域内,先出现的在前,后出现的在后。例:A SEGMENT FAT A B SEGMENT BAZ E C SEGMENT BAZ B D SEGMENT ZOU C E SEGMENT FAT D LINK 处理前 LINK 处理后4.2.1段定义伪指令SEGMENT/ENDS2.GROUP伪指令n格式:组名 GROUP 段名,n功能
8、:用来把模块中若干不同名的段集合成一个组,使其装入同一个物理段中,组内各段之间的跳转可视为段内跳转。n注:组名与段名是一样的取名规则,是代表该组的段地址,格式中的段名也可用表达式SEG变量或SEG标号。4.2.2位置计数器$和定位伪指令ORG 1.位置计数器$n汇编程序专门设置了一个表示当前位置的计数器,称位置计数器$。正常情况下,汇编程序每扫描一个字节,位置计数器的值便加1。n语句:TOP EQU$-STACK含义:当前位置计数器的值$减去STACK代表的起始位置的值,然后把两者的差值赋予符号常量TOP。n语句:JMP$含义:程序跳转到本条指令执行。4.2.2位置计数器$和定位伪指令ORG
9、2.ORG伪指令n格式:ORG 数据表达式n功能:把位置计数器的值设置为表达式的值。ORG后面的一条指令性语句或数据区定义命令即从指定的位置处进行汇编。4.2.3段寻址伪指令ASSUME n格式:ASSUME 段寄存器:段名,段寄存器:段名,n功能:用于告知汇编程序,段寄存器CS、DS、ES和SS的内容将被设定为那些段或组的段址。4.2.3段寻址伪指令ASSUME(1)段名可以是已定义过的任何段名或组名,也可以是表达SEG 变量或SEG 标号,还可以是NOTHING。(2)除CS外,DS、ES、SS的设置必须通过指令性语句来完成。注:4.2.3段寻址伪指令ASSUME CODE SEGMENT
10、 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:NOTHING MOVAX,DATA MOVDS,AX ;设置DS MOVAX,STACK MOVSS,AX ;设置SS CODE ENDS例:4.2.4过程定义伪指令PROC/ENDPn过程即是子程序。汇编语言规定必须对过程进行定义,以确定过程的三种属性。过程的属性确定之后,就可对调用指令CALL进行正确汇编,决定是产生近调用指令还是远调用指令。4.2.4过程定义伪指令PROC/ENDP1.过程的三种属性 段属性:过程所在段的段地址。偏移量属性:过程所处位置的段内偏移地址。类型属性(NEAR或FAR)。过程为NEAR或F
11、AR类型。nNEAR-近过程。该过程与调用指令CALL处在同 一个代码段中(段名相同)。nFAR-远过程。该过程与调用指令CALL处在不同的代码段中(段名不同)。4.2.4 过程定义伪指令PROC/ENDP2.过程的定义使用格式:过程名 PROC NEAR/FAR RET 过程名 ENDP4.2.4过程定义伪指令PROC/ENDP2.过程的定义n功能:把具有一定功能的程序段设计成为一个过程(子程序),便于实现模块化的程序设计。注:(1)CALL指令中过程名起着标号的作用。有段属性、偏移量属性和类型属性(NEAR和FAR)。(2)子程序中至少有一个RET。n过程名是为该过程指定的一个名称,与变量
12、、标号的定义法相同。4.2.5数据定义伪指令与存储器分配 1.变量的三种属性(1)段属性即变量所使用的段;(2)段内偏移属性;(3)变量的类型:字节、字、双字等。DB定义字节型变量,每个变量分配1个存储单元DW-定义字型变量,每个变量分配2个存储单元DD-定义双字型变量,每个变量分配4个存储单元n任何变量均有下列三属性。4.2.5数据定义伪指令与存储器分配 2.变量定义及存储器申请伪指令DB/DW/DD功能:定义一变量,并为其分配一定数量的存储单元,变量的初值由表达式的值指定。若初值可任意,则用问号(?)表示。变量名可省。nHEX DB 5AH ;定义字节变量nVWORD DW 1234H;定
13、义字变量(1)(1)格式格式1 1:变量名变量名 DB/DW/DDDB/DW/DD表达式表达式4.2.5数据定义伪指令与存储器分配 2.变量定义及存储器申请伪指令DB/DW/DDBUFFER DW 1,0,-1 ;定义了三个字单元 STR DB Program ;定义了一个字符串 HEX_OFF DW HEX ;定义了一个字单元,其初值为已定义变量HEX的偏移量。DVAR DD 12345678H ;定义了一个双字单元 n注:在存放字变量时,低字节在前,高字节在后。n注:在存放字符串时,存储的是字符的ASCII码。4.2.5数据定义伪指令与存储器分配 2.变量定义及存储器申请伪指令DB/DW/
14、DDASC DB 2 DUP(?)功能:分配2个字节单元,初值任意 BUF DW 100 DUP(0)功能:分配100个字单元,初值为0ZIP DB 3 DUP(0,2 DUP(1)功能:存储单元依次初始化为:0,1,1,0,1,1,0,1,1。(1)(1)格式格式2 2:变量名变量名 DB/DW/DDDB/DW/DDDUPDUP 表达式表达式4.2.5数据定义伪指令与存储器分配 2.变量的使用MOV AL,HEX ;取变量HEX的内容送AL寄存器AL。MOV ASCBX,AL ;取变量ASC的偏移地址,再与BX寄存器的内容相加,得到存储器操作数的有效地址EA,再将AL寄存器的内容送入该单元。
15、n变量经过定义及存储器申请之后,在程序中即可像高级语言一样使用。4.2.6记录与结构定义伪指令(RECORDSTRUC/ENDS)1.记录定义伪指令RECORDn记录:能进行位处理的8位或16位二进制数。n字段:记录中相邻的若干位构成一个字段。n记录类型:说明记录中有哪些字段,各字段分别有多少位。(1)(1)记录类型的定义记录类型的定义 n记录名 RECORD 字段名:宽度=初值表达式,4.2.6记录与结构定义伪指令(RECORDSTRUC/ENDS)1.记录定义伪指令RECORDn记录名和字段名遵循标号的取名法则。宽度表示该字段占有的二进制位数,最多不能超过16位,初值表达式可省,表示该字段
16、的初值。如:COLOR RECORD X:3=5,Y:4=12,Z:9=255 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 15 13 12 9 8 0COLORXYZ4.2.6记录与结构定义伪指令(RECORDSTRUC/ENDS)1.记录定义伪指令RECORDn注:当定义中的字段总位数不能占满整个字节或字时,汇编程序就把所定义的字段与记录的低位端对齐。如:COOL RECORD A:5=17,B:7=127 X X X X 1 0 0 0 1 1 1 1 1 1 1 1 15 12 11 7 6 0COOL未定义AB4.2.6记录与结构定义伪指令(RECORDSTRUC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14-4.2 伪指令计算机硬件技术 14 4.2 指令 计算机硬件 技术
限制150内