微型计算机原理及应用第三版 (5)
《微型计算机原理及应用第三版 (5)》由会员分享,可在线阅读,更多相关《微型计算机原理及应用第三版 (5)(16页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第七章 8086汇编语言中基本语法,助记符,指令:,CPU,可以执行的能完成特定功能的语句,能产生目标代码。,它主要由,CPU,指令组成。,伪指令:是一种不产生目标代码的语句,它仅仅在汇编过程中告,诉汇编程序应如何汇编,宏指令:它是一个指令序列。汇编时凡有宏指令语句的地方都用,相应的指令序列的目标代码插入。,一、汇编语言源程序的一些必要成分,1、段结构的形成,、段定义伪指令:,SEGMENT,与,ENDS,段名,SEGMENT,段名,ENDS,(*),段名字必须在两处出现,而且必须致。,(*),segmen
2、t,和,ends,必须成对出现。,segment,定义一个段的开始,ends,定义一个段的结束,段寄存器说明伪指令:,assume,ASSUME,段寄存器名:段名,段寄存器名:段名,,(*),指出源程序中的逻辑段与物理段之间的关系。,当汇编程序汇编一个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。,(*),只是通知汇编程序有关段寄存器与逻辑段的关系,并没有给段寄存器赋于实际的初值。,例如:,CODESEGMENT,ASSUMECS:CODE,DS:DATA,SS:STACK,MOVAX,DATA,MOVDS,AX,MOVAX,STACK,MOVSS,AX,CODEENDS,模块伪
3、指令:,name,end,public,extrn,NAME,用于给源程序汇编以后得到的目标程序指定一个模块名,连接时需要使用这个目标程序的模块名。,NAME,模块名,(2),END,表示源程序到此结束,指示汇编程序停止汇编,对于,END,后面的语句可以不予理会。,END,标号,END,伪指令后面的标号表示程序执行的启动地址。,END,伪指令将标号的段基值和偏移地址分别提供给,CS,和,IP,寄存器。方括号中的标号是任选项。如果有多个模块连接在一起,则只有主模块的,END,语句使用标号。,(3),PUBLC,伪指令说明本模块中的某些符号是公共的,即这些符号可以,提供给将被连接在起的其他模块使用
4、,PUBLIC,符号,(4),EXTRN,EXTRN,伪指令说明本模块中所用的某些符号是外部的,即这些符号在将被连接在一起的其他模块中定义(在定义这些符号的模块中还必须用,PUBLIC,伪指令说明),EXTRN,名字:类型,,例如:程序的框架,datasegment,dataends,codesegment,assume,cs,:code,ds,:data,start:,mov,ax,data,mov ds,ax,codeends,endstart,2、数据的定义,常量、变量和标号,常量,:,一个常量如果是一个字符串,该字符串必须用单引号或双引号括起来,汇编语言把它们汇编成相应的,ASCII,
5、码。,变量:,变量实际上代表着内存中一块存储单元,,变量有三个属性:段基址、段内偏移量以及类型。变量的类型是指变量元素具有的字节数,。字节变量表示一个8位数据,其类型为1;字变量表示一个十六位数据其类型为2;双字变量表示一个32位的数据,其其类型为4;,标号:,实际上是代码段中的某一指令的地址。它也有三个属性:段地址、段内偏移量和类型。标号的类型有两种:,NEAR,标号,,它只能在定义它的段内被引用,其类型为,l,:,FAR,标号,,它既可以在定义它的段内被引用,也可以在其他段内被引用,其类型为,2,,它代表了指令的段地址和偏移量。标号可以在各种转移指令中作为操作数使用。它只能定义在可执行的代
6、码段中。,数据定义伪指令:,DB,DW,DD,DQ,DT,数据定义伪指令的用途是定义一个变量的类型,给存储器赋初值,或者仅仅给变量分配存储单元,而不赋于特定的值,第一种格式:,名字 伪指令 表达式,第二种格式:,名字 伪指令,DUP (,表达式),例题:画出经过如下数据定义后内存中数据的存放情况,。,var1 db 100,0ffh,var2 db ,abc,注意:字符串定义用,db,var3,dw,?,ab,var4,dw,1,3456h,var5,dd,56789h,var6 db 3 dup(1,2),符号定义伪指令:,equ,=,label,(1)EQU,和=,名字,EQU,表达式,例
7、如:,CHAR EQU HELLO THE WORLD,(*),利用,EQU,伪指令,可以用一个名字代表一个数值,或用一个较,简短的名来代替一个较长的名字。,(*),EQU,伪指令不允许对同一符号重复定义。,(*),=伪指令与,EQU,基本相同只是区别在于它可以对同一个名字,重复定义,(2),LABEL,名字,LABEL,类型,AREAW LABEL WORD MOV AREAW,AX,AREAB DB l00 DUP(?)MOV AREAB,AL,(四)其它的一些伪指令,(1),ORG,和$,ORG,指定了在它之后的代码或数据存放的起始地址的偏移量即 以语句中表达式的值作为起始地址,ORG
8、,在汇编程序对源程序的汇编过程中,使用地址计数器来保存当前正在汇编的指令的地址地址计数器的值可用$来表示。汇编语言允许用户直接,用$来引用地址计数器的值.,ORG$+8,JNZ$+6,ARRAY DW 11H,12H,$+3,13H,(,假设,ARRAY,的起始地址为0070,H),(2).RADIX,定义源程序中书写数据时的隐含进位方式,.,RADIX ,(3),COMMENT,块注释伪指令,COMMENT,定界符 注释 定界符,二、表达式与运算符,1、算术运算符,算术运算符有加(十)、减(一)、乘(,)、除()、模(,MOD)、,左移(,SHL)、,右移(,SHR),七种。除法返回的是商,
9、而,MOD,操作返回除法操作的余数.例如,PI-INT EQU 3141610000 ;,PI-INT3,P-REM EQU 31416 MOD 10000 ;,P-REM1416,SHL,和,SHR,是移位操作。,般在建立屏蔽字时使用。例如:,MASKB EQU 00110010B,MASKB1 EQU MASKB SHL 2 ;,MASKB1=11001000B,MASKB2 EQU MASKB SHR 2 ;,MASKB2=00001100B,注意:运算符的运算是在汇编时完成的,2、逻辑运算符,汇编语言的逻辑运算符有,AND,逻辑与,OR,逻辑或,XOR,逻辑异或,NOT,逻辑非,逻辑运
10、算符与逻辑运算指令的区别在于前者在汇编时完成逻辑运算,而后者在执行指令时完成逻辑运算,MASKB EQU 00101011B,MOV AL,5EH,AND AL,MASKB AND 0FH;,ANDAL,0BH,;,(AL)=0AH,3、关系运算符,关系运算符有:,EQ,等于;,NE,不等,LT,小于;,GT,大于,LE,小于等于;,GE,大于等于,关系运算符比较两个操作数并产生一个逻辑值。如果关系成立,则结果为,真(0,FFFFH),;,否则为,假(0000,H),。,关系运算符一般都,同其他操作结合以构成一个判断表达式。例如要实现,AX=5,如果,CHOICE20,AX=6,如果,CHOI
11、CE20,那么可以使用下列语句:,MOV AX,(,(CH0ICE LT 20),AND 5),OR,(,(CHOICE GT 20),AND 6),4分析运算符,(1),SEG,求段基址,(2),OFFSET,求偏移地址,(3),TYPE,求符号名类型值,(4),SIZE,求为符号名分配的字节数,(5),LENGTH,求为符号名分配的项数,TABLE DW 100 DUP(?),MOV AX,SEG TABLE ;,把,TABLE,的段地址送,AX,MOV BX,OFFSET TABLE ;,把,TABLE,的偏移地址送,BX,MOV CX,TYPE TABLE ;,MOV DX,LENGT
12、H TABLE,MOV BP,SIZE TABLE,注意:,LENGTH,和,SIZE,运算符只对用,DUP,定义的变量有意义,5.组合运算符,(1),PTR,运算符,PTR,运算符用于指定或暂时改变变量或标号的原有属性。,MOV,BYTE PTR,SI,0FFH,JMP,DWORD PTR,DI,VAR DW 100 DUP(?),MOV,BYTE PTR,VAR,AL,(2)THIS,运算符,LABC EQU THIS BYTE,LABD DW 4321H,MOV AL,LABC,MOV AX,LABD,操作系统使用的两种方式,(1)使用者:命令行方式或图形界面方式,(2)程序员:系统功能
13、调用或应用程序接口(,API),系统功能调用,:,操作系统提供给应用程序的软件接口,完成应用程 序对系统的使用,系统功能调用的使用方法,(1)传送入口参数到指定寄存器中;有的子程序无入口参数,则只需安排后两个语句,(2)功能号送入,AH,寄存器中;,(3),INT 2lH。,(4),系统将出口参数送到指定寄存器中或从屏幕显示出来。,例题:,从键盘输入一串字符到一个内存变量,遇到回车则结束输入,同时在屏幕上显示相同个数的一串星号。,DATASEGMENT,VARDB 10 DUP(0),DATAENDS,CODESEGMENT,ASSUME CS:CODE,DS:DATA,START:MOVAX,DATA,MOVDS,AX,LEADI,VAR,LAB:,MOV AH,8,INT21H,CMPAL,ODH,JZNEXT,MOVDI,AL,INCDI,MOVAH,2,MOVDL,2AH,INT21H,JMPLAB,NEXT:,MOVAH,4CH,INT21H,CODEENDS,END START,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。