某微型计算机指令格式如图,微机原理第7章.ppt

a7f4a3f590493a1e451dd952a488fd7c.gif

微机原理第7章.ppt

(181页)

d09c849bbfe48614ba020cecb2cfc5df.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

29.9 积分

第7章 微型计算机汇编语言及汇编程序7.1 宏汇编语言的基本语法7.2 伪指令7.3 宏指令7.4 系统功能调用7.5 汇编程序的功能及汇编过程7.6 汇编语言程序设计习题 汇编语言和机器语言相比,使用汇编语言来编写程序的突出优点就是可以使用符号;具体地说,就是可以用助记符来表示指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。助记符一般都是表示一个操作的英文字母的缩写,很便于识别和记忆。 用汇编语言编写的程序叫源程序。 源程序不能由机器直接执行,而必须翻译成由机器代码组成的目标程序,这个翻译过程称为汇编。 用来把汇编语言编写的程序自动翻译成目的程序的软件叫汇编程序。汇编过程的含义如图7.1所示。图7.1 汇编语言的指令和机器语言的指令之间有一一对应的关系。所以,汇编语言是和机器密切相关的,是面向机器的语言,CPU不同的机器有不同的汇编语言。 采用汇编语言进行程序设计时,我们可以充分利用机器的硬件功能和结构特点,从而可有效地加快程序的执行速度,减小目标程序所占用的存储空间。因此,与高级语言相比,汇编语言为我们提供了直接控制目标代码的手段,而且可以对输入/输出端口进行控制,实时性能好,执行速度快和节省存储空间等明显优点。所以,汇编语言大量被用于编写计算机系统程序、实时通信程序、实时控制程序等。 8086和80286,80386,80486系统的汇编程序完全相同,简称作ASM-86。在此基础上进一步扩展其功能,成为当前广泛使用的8086宏汇编程序,简称作MASM-86。图7.2 它与指令语句不同,伪指令语句(又叫命令语句)中的伪指令本身不产生对应的机器目标代码。它仅仅是告诉汇编程序,对后面的指令语句和伪指令语句的操作数应该如何产生机器目标代码。每一条伪指令语句共分4个字段,它的指令格式如图7.2所示。7.1 宏汇编语言的基本语法 7.1.1 伪指令语句格式1. 标号名字段 这是一个任选字段。标号名后面不能用冒号“:”,这是它与指令语句的突出区别。不同的伪指令,标号名可以是常量名、变量名、过程名、结构名、记录名等。它们可以作为指令语句和伪指令语句的操作数,这时,标号名就表示一个常量或存储器地址。2. 伪指令字段 这是伪指令语句不可省略的主要成分。伪指令种类很多,如定义数据伪指令DB,DW,DD;段定义伪指令SEGMENT;定义过程伪指令PROC;…。它们是伪指令语句要求汇编程序完成的具体操作命令。3. 操作数字段 本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。操作数可以是一个常数(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号、一些专用的符号(如BYTE,FAR,PARA等)。4. 注释字段 这是一个任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。7.1.2 常数、变量和标号 常数、变量和标号是汇编语言能识别的数据项,它是指令和伪指令语句中操作数的基本组成部分。一个数据项包含有它的数值和属性两部分,这两部分对一条语句汇编成机器目标代码都有直接关系。 1. 常数 常数是没有任何属性的纯数值。在汇编期间,它的值已能完全确定,且在程序运行中,它也不会发生变化。它可以有以下几种类型:(1) 二进制数:以字母B结尾的,由0和1组成的数字序列,如01011010B。(2) 八进制数:以字母O或Q结尾的0~7数字序列,如723Q,35O。(3) 十进制数:0~9数字序列,可以用字母D结尾,也可以没有结尾字母,如129,129D。(4) 十六进制数:以字母H结尾,由数字0~9和字母A~F(或a~f)组成的序列,如3A5BH,0FH。为了区别由A~F组成的是一个十六进制数还是一个标识符,凡以字母A~F为起始的一个十六进制数,必须在前面冠以数字“0”,否则汇编程序认作标识符。 (5) 实数:它由整数、小数和指数3部分组成,这是计算机中的浮点表示法。实数一般用十进制数形式给出,实数的格式如下:   ±整数部分小数部分E±指数部分 其中,整数和小数部分形成这个数的值,称作尾数,它可以是带符号的数。指数部分由指数标识符E开始,它表示了值的大小,如5.213E-4。(6) 字符串常数:用引号括起来的一个或多个字符。这些字符以ASCII码形式存储在内存中。如‵AB′,在内存中就是41H,42H。在程序中,常数主要出现在:(1) 指令语句中源操作数中作立即数,它应与目的操作数的位数相一致,可以是8位或16位,例如:  MOV AX,0A5F1H(2) 在指令语句的基址加变址的寻址方式中作位移量,例如:  MOV BX,[SI+32H](3) 在数据定义伪指令中,例如:DB 12H ; 定义一个字节数据DW 1234H ; 定义一个字数据DD 12345678H ; 定义一个双字数据DB ′A B C D′ ; 定义4个字节的字符串数据 2. 变量 变量是内存中一个数据区的名字,代表存放在某些存储单元的数据,这些数据在程序运行期间随时可以修改。为了便于对变量的访问,它常常以变量名的形式出现在程序中,它可以认为是存放数据存储单元的符号地址。(1) 变量的定义与预置: 定义变量就是给变量分配存储单元,且对这个存储单元赋于一个符号名——变量名,同时将这些存储单元预置初值。定义变量是用数据定义伪指令DB,DW,DD等。例如:VAR-DATA   SEGMENTDATA1     DB      12HDATA2     DB      34HDATA3     DW      5678HVAR-DATA   ENDS 经过定义的变量,每个变量均有3个属性:① 段属性(SEG):表示变量存放在哪一个逻辑段中(即变量所在段的段基值)。例如,变量名为DATA1,DATA2,DATA3的3个变量都存放在VAR-DATA逻辑段中(用SEGMENT/ENDS伪指令定义一个逻辑段)。当在指令中要对这些变量进行存取操作时,事先要把它们所在段的段基值存放在某一个段寄存器(如DS)中。② 偏移量属性(OFFSET):表示变量在逻辑段中离段起始点的字节数。例如,变量DATA1的偏移量为0,而DATA2的偏移量为1,DATA3的偏移量为2。上述段和偏移量两个属性就构成了变量的逻辑地址。③ 类型属性(TYPE):表示变量占用存储单元的字节数。这一属性是由数据定义伪指令DB,DW,DD来规定的。变量DATA1,DATA2是用DB定义的,它的类型属性为字节;而DATA3是用DW定义的,类型属性为字;如果用DD定义,类型属性为双字。(2) 数据定义伪指令: 这种伪指令主要为数据项分配存储单元并预置初值。由这种伪指令构成的语句格式是:        DB   变量名  。省略部分。2) 程序流程(如图7.13和图7.14、图7.15所示)图7.12图7.13图7.14图7.15子程序: PP功能: 显示多字节数(十六进制)。入口: 显示数据在Y单元,长度3字节。出口: 显示十六进制数(3) 程序清单1::NAME EX52:PAGE50,703:DATSEGMENT4:ADB1255:BDB906:YDB3DUP(0)7:ZDB0,08:DATENDS9:STASEGMENTSTACK10:DW50DUP(?)11:STAENDS12:CODSEGMENT13:ASSUMECS:COD,DS∶DAT14: STAR PROC FAR 15:  PUSH DS 16:  XOR AX,AX  17:  PUSH AX  18:  MOV AX,DAT  19:  MOV DS,AX  20:  MOV AX,STA  21:  MOV SS,AX  22: ;    23:  MOV AL,A  24:  MOV Z,AL  25:  MOV Z+1,AL  26:  CALL EX5-1  27:  MOV AL,B  28:  MOV Z,AL  29:  MOV Z+1,AL  30:  CALL EX5-1  31:  MOV AL,A  32:  MOV Z,AL  33:  MOV AL,B  34:  MOV Z+1,AL  35:  CALL EX5-1  36:  ADD WORDPTRY,AX  37:  ADC BYTEPTR[Y+2],0  38:  CALL PP  39:  RET   40: STAR ENDP   41: ;    42: EX5-1 PROC   43:  MOV AL,Z  44:  MOV AH,Z+1  45:  MUL AH  46:  ADD WORDPTRY,AX  47:  ADC BYTEPTR[Y+2],0  48:  RET   49: EX5-1 ENDP   51: PP PROC   52:  LEA SI,Y  53:  ADD SI,2  54:  MOV CX,3  55: P∶ MOV AL,[SI]  56:  CALL PP3  57:  DEC SI  58:  LOOP P  59:  RET   60: PP ENDP   61: ;    62: PP3 PROC    63:  PUSH AX  64:  PUSH BX  65:  PUSH CX  66:  PUSH DX  67:  MOV BH,AL  68:  MOV BL,2  69:  MOV CL,4  70:  SHR AL,CL  71: GG2∶ CMP AL,10  72:  JGE GG3  73:  OR AL,30H  74:  JMP GG4  75: GG3∶ ADD AL,37H  76: GG4∶ MOV DL,AL  77:  MOV AH,2  78:  INT 21H  79:  DEC BL  80:  JZ GG5  81:  MOV AL,BH  82:  AND AL,0FH  83:  JMP GG2  84: GG5∶ POP DX  85:  POP CX  86:  POP BX  87:  POP AX  88:  RET   89: PP3 ENDP   90: ;    91: COD ENDS   92:  END STAR习题7.1 在数据区中,以TABLE开始连续存放0~6的立方值(称为立方表),设任给一数x(0≤x≤6),x在TAB1单元,查表求x的立方值,并把结果存入TAB2单元。7.2 假设学生某门课的成绩存放在数据区中,请编一程序,统计该成绩中小于60分的人数,60~90分的人数,大于90分的人数,并显示在屏幕上。7.3 在数据区中以如下方式存放数据:DATA  SEGMENT  LIST1  DB   15      DB   48      DB   ? LIST2  DB   20,53,?7.4 编一个十进制的乘法程序,被乘数和乘数均以ASCII码的形式存放在内存中,将乘积在屏幕上显示出来。 补充1:假设有下列数据段:DATA SEGMENTSTRN1 DB ‘ABC’,0DH,0AH,‘$’STRN2 DB 20 DUP(0)STRN3 DW 5 DUP (?)STRN4 DD 4 DUP (?)STRN5 DW 1234H,5678HDATA ENDS设DATA为091DH,要求写出STRN1----STRN5的段值、段内偏移量,类型值TYPE,LENGTH及SIZE属性值。补充2: 阅读下列数据传送程序段,改正使用不当的语句。A DB 35,47,24H,‘XYZ’B DB N DUP(0)N EQU $-A MOV SI,A MOV DI,B MOV CX,LENGTH ACP:MOV AX,[SI] MOV [DI],AX INC SI INC DI DEC CX LOOP CP 补充1:解 SEG STRN1=SEG STRN2=……STRN5=091DHOFFSET STRN1=0, OFFSET STRN2=0006HOFFSET STRN3=001AH, OFFSET STRN4=0024HOFFSET STRN5=0034HTYPE STRN1=1, TYPE STRN2=1TYPE STRN3=2, TYPE STRN4=4TYPE STRN5=2LENGTH STRN1=1, LENTH STRN2=20LENGTH STRN3=5, LENTH STRN4=4LENGTH STRN5=1 SIZE STRN1=1, SIZE STRN2=20 SIZE STRN3=10, SIZE STRN4=16 SIZE STRN5=2 SIZE=TYPE*LENGTH 补充2:解A DB 35,47,24H,‘XYZ’N EQU $-AB DB N DUP(0) LEA SI,A LEA DI,B MOV CX,NCP:MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP CP

关 键 词:

微机 原理

4d91c43bfc72ca913299809b07b4968f.gif

天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:微机原理第7章.ppt

链接地址:

https://www.wenku365.com/p-51593449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值