微机原理第4章 (2).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:186 大小:7.3MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

微机原理第4章 (2).ppt

微机原理第4章(2).ppt

预览

免费试读已结束,剩余 176 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章汇编语言程序设计4.1汇编语言程序格式START:MOVAX,DATAMOVDS,AX;给数据段寄存器DS赋值MOVAL,BUF1;取第1个加数ADDAL,BUF2;和第2个加数相加MOVSUM,AL;存放结果MOVAH,4CHINT21H;返回DOS状态CODEENDS;段定义结束(CODE段)ENDSTART;整个源程序结束汇编语句的种类1) 指令语句指令语句是功能性语句,由Intel8086/8088CPU提供的指令形成,实现一定的操作功能,能够被编译成机器代码(1-6字节)。例:MOVAX,DATAB81007MOVDS,AX8ED82) 伪指令语句伪指令语句也叫指示性语句,只是为汇编程序在翻译汇编语言源程序时提供有关信息,并不产生机器代码。程序中的语句:BUF1DB34HBUF2DB2AHSUMDB?作用:定义符号,分配存储空间,初始化存储器等3)宏指令4.1.2汇编语言的语句格式8086/8088的汇编语句一般由5个字段组成,根据其不同种类的语句格式来描述,指令性语句与伪指令语句有不同处。[名字][前缀]指令助记符操作数[;注释]其中带方括号的项可以省略,操作数以逗号(,)分开,注释内容以分号(;)引导。1.名字1)名字的标识符名字也就是由用户按一定规则定义的标识符,可由下列符号组成:(1)英文字母(A~Z,a~z);(2)数字(0~9);(3)特殊符号(?、@、_等)。2)名字的定义规则(1)数字不能作为名字的第一个符号;(2)单独的问号(?)不能作为名字;(3)一个名字的最大有效长度为31,超过31的部分计算机不再识别;(4)汇编语言中有特定含义的保留字,如操作码、寄存器名等,不能作为名字使用。名字为了便于记忆,应该做到见名知义,如用BUFFER表示缓冲区、SUM表示累加和等。3)名字的两种主要形式:标号,变量(1)标号(指令性语句)。标号在代码段中定义,后面跟着冒号“:”,可单列一行作用:表示程序的开始;供JMP\CALL\LOOP等指令作操作数使用,以寻找转移目标地址。标号有三种属性:段基值、段内偏移量(或相对地址)和类型属性。段基值(SEG)属性:是标号所在逻辑段的段基值,即段起始地址的前16位。此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。段内偏移量(OFFSET)属性:是标号距离段起始地址的字节数,对于16位段是16位无符号数(8086)类型(TYPE)属性:类型表示该标号所代表的指令的转移范围,分为NEAR和FAR两种。NEAR类型的标号只能在段内引用,用2字节指针给出转移的偏移量属性(即只改变IP值,不改变CS值)FAR类型的标号无限制,必须用4字节指针指出转移的段地址与段内的偏移地址。(2)变量:后面不跟冒号可以是标识符定义的常量名、变量名、过程名、段名、以及宏名。变量经常在操作数字段出现。它也有段、偏移及类型三种属性。段属性:定义变量的段起始地址,此值必须在一个段寄存器中。偏移属性:同标号类型属性:变量的类型属性定义该变量所保留的字节数。如BYTE(DB,1个字节长)、WORD(DW,2个字节长)、DWORD(DD,4个字节长)、FWORD(DF,6个字节长)、QWORD(DQ,8个字节长)、TBYTE(DT,10个字节长)。注意:在同一个程序中,同样的标号或变量的定义只允许出现一次,否则汇编程序会指示出错。变量的后面没有冒号,这是伪指令与指令性语句最主要的区别。2.[前缀:]指令助记符8086、8088中有些特殊指令,它们通常作为前缀与其他指令配合使用。例如:和串操作指令(MOVS\CMPS\SCAS\LODS\STOS)等连用的5条“重复指令”(REP、REPE/REPZ、REPNE/REPNZ)指令助记符用来指明不同的操作指令。如MOV,ADD等都是指令助记符。3.操作数指令中的操作数是指令执行的对象。对于一般执行性指令,可以有一个或两个操作数,也可以没有操作数。若为两个操作数,则称左边操作数为目标操作数,右边操作数为源操作数。对于伪指令和宏指令,可以有多个操作数。当操作数多于一个时,操作数之间用逗号分开。操作数可以是立即数操作数,寄存器操作数,存储器操作数,操作数的的形式可以是常数、表达式、变量名。1)常数(立即操作数、变址寻址中的位移量、伪指令中变量赋初值)(1)数值常数。二进制、八进制、十进制或十六进制数,书写时用加后缀(如B、O或Q、D、H)。十进制数可以省掉后缀。十六进制数以A~F开头时,前面要加数字0,避免和名字混淆,如十六进制数A6H,应写成0A6H,否