微机原理与接口技术第3章(汇编部分).ppt_第1页
微机原理与接口技术第3章(汇编部分).ppt_第2页
微机原理与接口技术第3章(汇编部分).ppt_第3页
微机原理与接口技术第3章(汇编部分).ppt_第4页
微机原理与接口技术第3章(汇编部分).ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主要内容:,汇编语言源程序的结构 汇编语言语句格式 伪指令 功能调用,3.4 汇编语言的编程格式,一 汇编语言的基本概念,汇编语言和机器语言属于低级语言 是面向微处理器的语言 ,一般不具有通用性和可移植性,二 汇编语言程序结构,1汇编语言源程序的结构,CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X ADD AL,Y MOV Z,AL MOV AH,4CH INT 21H CODE ENDS END START,DATA SEGMENT X DB 30H Y DB 40H Z DB ? DATA ENDS,数据段,代码段,计算 Z=XY,数据段,附加段,程序段,堆栈段,要点总结:,汇编语言源程序由段结构组成。,一个段由 “SEGMENT”(段定义开始)和“ENDS” (段定义结束)语句来定义。,每个段都有唯一的段名,前后一致。,段名不能相同。,数据段、堆栈段和代码段的作用各不相同。,各个段都由一系列语句组成。,语句包括指令语句和伪指令语句。,二 汇编语言程序结构,2汇编语言的语句格式,指令语句的标号后有冒号“:”,而伪指令语句的名字后则没有冒号。,指令格式 START:MOV AL,DATA;注释 标号 助记符 操作数,TABLE DB 11H,22H,33H,44H 名字 伪指令 操作数表 ;注释,伪指令格式,二 汇编语言程序结构,3. 操作数,(1) 常数:二进制、八进制、十进制、十六进制或ASCII码字符串(例:A,ABCD ),(2) 寄存器名,二 汇编语言程序结构,(3) 存储器操作数: 用 、变量、标号表示,变量的属性: 段 值:DS 偏移量:与DS的位移量。 类 型: BYTE(字节) WORD(字) DWORD(双字),01H 02H 03H,DATA,04H 00H 05H 00H,变量:内存数据区的符号地址,DS:0000H,START:MOV AL,DATA; 标号 变量,标号的属性: 段 值:CS 偏移量:与CS的位移量。 类 型: NEAR近属性) FAR(远属性),START:MOV AL,DATA; 标号,标号:内存程序区的指令地址,START,指令,CS:0000H,4、运算符和表达式,算术运算: +,-,*,/,MOD 逻辑运算: AND,OR,NOT,XOR 关系运算: EQ、NE、LT、GT、LE、GE,仅对两个数值而言 关系不成立,结果为0; 关系成立,结果为FFFFH。,*取值运算和属性运算,二 汇编语言程序结构,取值运算符,OFFSET 取偏移地址 SEG 取段地址 MOV BX,OFFSET TABLE,TYPE 取变量的类型 LENGTH 取存储区的长度 SIZE 取总字节数,BUFFER DW 10 DUP(0) DATA1 DB 5 TYPE BUFFER = 2 LENGTH BUFFER =10 SIZE BUFFER =20,SIZE = LENGTH * TYPE,BX,二 汇编语言程序结构,属性运算符 PTR,指定存储器操作数的临时属性 例:MOV BYTE PTRBX,01H,BX,01H,MOV WORD PTRBX8,2,二 汇编语言程序结构,语句分类:,指令性语句 指示性语句(伪指令),用于数据定义、符号定义、段定义、过程定义、分配内存、汇编结束等,三 伪指令,名字 -变量名(符号地址)、段名、过程名、符号名,名字后面没有冒号,例 TABLE DB 11H,22H,33H,44H 名字 伪指令 操作数表 ;注释,三 伪指令,DATA SEGMENT 段名 M1 DB 1,2 M2 DW 3 DUP( 5) M3 DB ABCD DATA ENDS,DATA:0000H,0002H,1、数据定义 定义变量类型及数据区,DB (字节) DW (2字节) DD (4字节) DQ (8字节) DT (10字节),三 伪指令,2、符号定义 1、符号名 EQU 表达式 2、符号名 = 表达式,EQU语句不能给符号名重新赋值 不占用内存,例:DATA SEGMENT M1 DB 1,2 DAT EQU 100 M2 DW 3 DUP( 5) DATA ENDS,01H 02H,M1,05H 00H 05H 00H 05H 00H,M2,三 伪指令,例: STACK DB 1,2,3,4,3 TOP EQU $-STACK,3、段定义,段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS,程序间连接时,段名:该段的起始地址 定位:段的起始点,分为PARA节(缺省16字节) BYTE、WORD、PAGE页(256个字节) 组合类型:不同模块中同名段的组合连接方式 分类名:类别相同的段组成一个段组,三 伪指令,BYTE XXXX XXXX XXXX XXXX XXXX B WORD XXXX XXXX XXXX XXXX XXX 0 B PARA XXXX XXXX XXXX XXXX 0 0 0 0 B PAGE XXXX XXXX XXXX 0 0 0 0 0 0 0 0 B X表示可取0或1,定位类型 段 的 起 始 地 址,ASSUME CS:段名 , DS:段名, ,用于告知汇编程序,CS、DS、ES和SS对应的段, ASSUME必须位于代码段开始, 除CS外,其余段基址的初值要用指令装入,4、设定段寄存器伪指令,例:CODE SEGMENT ASSUME CS:CODE,DS:DATA MOV AX,DATA MOV DS,AX CODE ENDS,三 伪指令,5、过程定义,过程名 PROC NEAR / FAR RET n 过程名 ENDP,过程名子程序入口的符号地址,三 伪指令,1、ORG 指定起始偏移地址 ORG 表达式,6、其它伪指令,DATA SEGMENT M1 DB 1,2 ORG 1000H M2 DB 3,4 DATA ENDS,2、END 标号名;汇编结束 标号名为程序的启动地址,01H 02H,M1,03H 04H,M2,三 伪指令,DOS系统内的各子功能,4-3,汇编语言中如何从键盘输入数据? 用INT 21H指令,调用DOS系统功能,功能号置入AH寄存器中,四 DOS系统功能调用,使用DOS系统功能调用的一般过程:,(1)显示单个字符 (2号调用),格式: MOV AH,2 MOV DL,字符ASCII码 INT 21H,功能: 将DL中的字符送显示器显示。,(2)键盘输入 (1号调用),格式:MOV AH,1 INT 21H,功能:等待从键盘输入一个字符并将输入字符的ASCII码送入寄存器AL中,同时在显示器上显示该字符。,四 DOS系统功能调用,(3) 显示字符串 (9号调用),格式:MOV AX,DATA MOV DS,AX LEA DX,字符串首偏移地址 MOV AH,9 INT 21H,功能:将当前数据区中以 $结尾的字符串送显示器显示。,STR DB PRESS ANY KEY , 0DH, 0AH , $,四 DOS系统功能调用,(4) 键盘输入字符串 (10号调用),格式:MOV AX,DATA MOV DS,AX LEA DX,缓冲区首偏移地址 MOV AH,10 INT 21H,功能:从键盘上往指定缓冲区中输入字符串并送显示器显示。,如:BUF DB 81;定义缓冲区的大小 DB ?;实际输入的字符个数 DB 80 DUP (0); 键盘输入的字符串,注:缓冲区应按规定的格式定义。,四 DOS系统功能调用,例:,四 DOS系统功能调用,(5)程序结束后返回DOS操作系统 (4CH号调用),设计步骤:,根据实际问题抽象出数学模型 确定算法 画程序流程图 分配内存工作单元和寄存器 程序编码 调试,五 汇编语言程序设计基础,例:教材160 例3.38 编程,Z=(X+Y)*8-X)/2,其中X、Y为字数据,分别存放在VARX,VARY单元中,结果Z存放在RESULT单元中。,1、顺序程序设计,五 汇编语言程序设计基础,分析: 1 、定义数据段 2、代码段 BX 表首地址; AH 0,AL X; BX BX+AX ;形成平方值地址 ALBX;得到平方值 RESULT AL;存结果 3 , 返回操作系统, MOV AH,4CH INT 21H;,例:教材161 例3.39 内存TABLE开始存放着015的平方表,查表求任意数X(0X15)的平方值,并将结果存入RESULT单元中。,五 汇编语言程序设计基础,在数据段中DATA1开始的连续80个单元中存放80位同学某门课的考试成绩(0100)请编程序统计大于等于90,8089分,7079分,6069分,小于60分的人数,分别放在同一数据段的DATA2开始的5个单元中。,例:教材161 例3.40,例:教材162 例3.41,五 汇编语言程序设计基础,2、分支程序设计,五 汇编语言程序设计基础,3、循环程序设计,在内存某区域有一批16位的数,找出其最大值(或最小值)并放到指定单元。,例:教材164 例3.42,内存ADDR开始放有N个字数据按从大到小的顺序排列。,例:教材165 例3.43,3、循环程序设计,直到型,当型循环,五 汇编语言程序设计基础,例:教材165 例3.43 将ADDR单元开始的N个16位数从大到小排序(冒泡法),第一遍,第二遍,第三遍,第四遍,从表头开始,相邻两数比较,次序不对交换位置,五 汇编语言程序设计基础,第一遍,相邻两数比较N-1次后,最小数移至表尾; 第二遍,比较N-2次后, 次最小数移至表尾相应位置;依次类推 共进行N-1遍,排序结束,采用减法计数 外循环 I= N-1 1 遍, 内循环 J= I 1,7,9,4,6,8,ADDR+0,ADDR+2,ADDR+4,ADDR+6,ADDR+8,字数组,五 汇编语言程序设计基础,五 汇编语言程序设计基础,4、子程序设计,过程名 PROC NEAR(或FAR) PUSH AX PUSH BX PUSH CX,具体处理程序,POP CX POP BX POP AX RET 过程名 ENDP,当用户编写的主程序看作DOS的子程序,该主程序属性定义为FAR属性,五 汇编语言程序设计基础,主程序与子程序,五 汇编语言程序设计基础,子程序应编写子程序说明文件: 例:,子程序名称: 子程序功能: 子程序中使用的寄存器: 入口参数; 出口参数: 子程序中调用其它子程序的名称,五 汇编语言程序设计基础,主程序与子程序之间的参数传递方式:,通过寄存器传递、 通过存储区传递、 通过堆栈区传递,请分析 例题 P167 3.44 3.45 3.46,五 汇编语言程序设计基础,子程序名称: SUM 功能:求数组元素的和 子程序中使用的寄存器:SI,CX,AX 入口参数;SI 数组首地址 CX元素个数 出口参数:结果存入数组后的地址字单元中,例6、编程求每个数组的元素之和,五 汇编语言程序设计基础,DATA SEGMENT ARY1 DW 100 DUP(2) SUM1 DW ? ARY2 DW 100 DUP(3) SUM2 DW ? DATA ENDS,1、定义数据段,例6、编程求每个数组的元素之和,五 汇编语言程序设计基础,STACK SEGMENT SA DW 50 DUP(?) TOP EQU SIZE SA STACK ENDS,2、定义堆栈段,TOP=100,五 汇编语言程序设计基础,CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP;设栈底 LEA SI,ARY1 ;入口参数 MOV CX,LENGTH ARY1 CALL SUM LEA SI,ARY2 ;入口参数 MOV CX,LENGTH ARY2 CALL SUM MOV AH,4CH INT 21H RET MAIN ENDP,子程序: SUM PROC NEAR XOR AX,AX L1:ADD AX, SI INC SI INC SI LOOP L1 MOV SI,AX RET SUM ENDP CODE ENDS END START,3、编写代码段,五 汇编语言程序设计基础,作业,汇编程序:将汇编语言源程序翻译成目标程序的程序,1、EDIT AAA.ASM 2、MASM AAA.ASM 3、LINK AAA. OBJ 4、DEBUG AAA.EXE,工具软件:,4-5 汇编语言上机调试过程,4-5 汇编语言上机调试过程,1、编辑源程序 CEDIT A1 . ASM 2、汇编源程序 CMASM A1;汇编后形成OBJ文件 3、链接 CLINK A1;链接后形成EXE文件 4、调试 CDEBUG A1 . EXE 检查逻辑错误 5、运行 CA1 . EXE,五、综合举例,例7、代码转换,16位二进制数转换为4位BCD码 分析:4位BCD码数值范围09999,十六进制数 除以1000 得到的商为千位 剩余余数除以100得到的商为百位 剩余余数除以10得到的商为十位 剩余余数为个位,:16位除法,DX、AX/CX,商AX,余数DX,8位除法指令: DIV CL;AX/CL,商AL,余数AH,1234H=1*163+2* 162 +3* 161 +4=4660 4660BCD码 4660BCD码=0100 0110 0110 0000,AX 16位二进制数 DX 0;结果清0,D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论