4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计

Slides:



Advertisements
Similar presentations
微型计算机原理及应用.
Advertisements

输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第10章 DOS功能调用与BIOS中断调用.
第7章 8086/8088汇编语言程序设计 7.1 引言 7.2 顺序程序设计 7.3 分支结构程序设计 7.4 循环结构程序设计
第四章 汇编语言 程序设计 任课教师:王晓甜
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
单片机原理与应用.
第3章 80x86汇编语言程序设计(下).
第3章 80x86汇编语言程序设计(中) 时间不够的情况下只讲16位汇编.
第三章 指令系统及其寻址方式 3.1 寻址方式 3.2 指令格式 3.3 指令系统.
第3章 80x86汇编语言程序设计(上) 16位汇编版本 时间不够的情况下只讲16位汇编.
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
微机原理与接口技术 第3章 8086指令系统 朱华贵 2015年09月25日.
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
Assembly Language Programming
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第3章 IA-32指令系统 3.1 基本数据类型 3.2 IA-32的指令格式 3.3 IA-32指令的操作数寻址方式
第8章 寻址方式与指令系统.
第4章 汇编语言程序设计 4.1 程序设计语言概述 4.2 汇编语言的程序结构与语句格式 4.3 汇编语言的伪指令
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
基本的”防”黑客技术 Basic” ” Hacker Technique
微机原理及应用 主讲:郑海春.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第8章 PCH中的常规接口.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
第 13 章 中断系统.
第二章 模拟量输出通道 本章要点 1.模拟量输出通道的结构组成与模板通用性; 2.8位D/A转换器DAC0832的原理组成及其接口电路
條件處理.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
3.4.5 控制转移指令(Control transfer instructions) (一)、控制转移指令概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
可编程定时计数器.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
第八章 中断系统.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
大数据搜索挖掘实验室 第五章 子程序设计 张华平 副教授 博士 Website: 大数据搜索挖掘实验室
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第8章 并行接口芯片 并行接口一般具有两个或两个以上的8位I/O接口。各个口的工作方式可由程序分别确定或改变,使用灵活,便于和各种外部设备连接。因此,又称可编程的外部接口(PPI) 目前各主要微处理器厂商都有自己的PPI产品,但它们的功能基本类似.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
Presentation transcript:

4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计 第四章 汇编语言程序设计 4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计

4.1 汇编语言 4.1.1 汇编语言及语句格式 汇编 汇编语言源程序 目标程序 1、指令语句 2、伪指令语句 汇编语言源程序 目标程序 1、指令语句 [标号:] 助记符 操作数 ;注释 2、伪指令语句 [名字] 定义符 参数 ;注释

4.1.2 数据定义伪指令格式 DB DW 变量 DD 表达式1,表达式2,…… DQ DT

格式中表达式可以是: 1、一个或多个常数/数值表达式 例如:22h,5×6,10101010B 2、不带引号的?或带引号的字符串 例如: 120,-5,0a6h`HELLO` 3、重复方式DUP 格式:变量 定义符 表达式1 DUP(表达式2) 其中,表达式1为重复次数 表达试2为重复内容 例如 4、定义过的变量/标号 如 DATA11 DW DATA1 DATA12 DD DATA2 GO

DATA1 DB 30H DATA2 DW 0240H,3500H DATA1 DATA3 DB (-1*3),(16/4) DATA2 DATA4 DD 34567H DATA3 DATA4 返回 30H 40H 02H 00H 35H FDH 04H 67H 45H 03H

DATA5 DB ? -- DATA6 DW ? DATA5 DATA7 DB ‘ABCD’ DATA6 DATA8 DW ‘AB’,’CD’ DATA7 DATA8 返回 -- 41H 42H 43H 44H

DATA9 DW 2 DUP (?) DATA10 DB 2 DUP(5,2 DUP(0)) DATA9 DATA10 返回 -- 05H 00H

变量定义数据的逻辑地址,其属性有段属性、偏移地址属性、类型属性。 变量和标号的属性 变量定义数据的逻辑地址,其属性有段属性、偏移地址属性、类型属性。 其类型属性如下:BYTE-----字节 WORD-----字 DWORD----双字 PWORD----三字 QWORD----四字 TWORD----五字 标号定义指令的逻辑地址,其属性有段属性、偏移地址属性、距离属性。 其距离属性如下:NEAR----近程(默认) FAR-----远程

4.1.3 段定义伪指令格式 1、简化的段定义伪指令 .MODEL----内存模式说明 (TINY、SMALL、MEDIUM、COMPACT、LARGE) .X86------选择80X86指令系统 .X86P-----选择80X86保护模式指令系统 .DATA-----定义数据段 .STARTUP—指示程序开始,初始化DS,SS .CODE-----定义代码段 .STACK----定义堆栈段 .EXIT-----返回操作系统

2、完整的段定义伪指令 4.1.4汇编结束伪指令 (1)段定义伪指令 段名 SEGMENT [属性] …… 段名 ENDS (2)段寄存器定义伪指令 ASSUME 段寄存器1:段名1,段寄存器2:段名2,…… 4.1.4汇编结束伪指令 对于简化的段结构程序,汇编结束伪指令格式: END 对于完整的段结构程序,汇编结束伪指令格式: END 标号

4.2 顺序结构程序 例1 将一个2位数压缩的BCD码转换成二进制数. .MODEL SMALL MUL BH .DATA ADD AL,BL BCD DB 01011001B MOV BIN,AL BIN DB ? .EXIT .CODE END .STARTUP MOV AL,BCD MOV BL,AL AND BL,0F H AND AL,0F0H MOV CL,4 ROR AL,CL MOV BH,0AH

4.3 分支程序设计 例1 ①用比较指令 CMP DEST,SRC ②用测试指令 TEST DEST,SRC ③用逻辑指令 JE EQUL 例1 ①用比较指令 CMP DEST,SRC JE EQUL …… EQUL: ②用测试指令 TEST DEST,SRC JNZ NEXT NEXT: ③用逻辑指令 SHR DEST,CL JC NEXT

例2 编程实现将键盘输入的小写字母转换成大写后输出。 例2 编程实现将键盘输入的小写字母转换成大写后输出。 .MODEL SMALL MOV DL,AL .DATA MOV AH,02H BLOCK DB ‘ERROR!’,0DH,0AH,’$’ INT 21H .CODE JMP DONE .STARTUP NEXT:LEA DX,BLOCK MOV AH,1 MOV AH,9 INT 21H INT 21H CMP AL, ‘a’ DONE:.EXIT JB NEXT END CMP AL, ‘z’ JA NEXT AND AL, 11011111B

4.4 循环程序设计 例1 ① MOV CX,COUNT ② MOV CL,COUNT ③ AGAIN: …… LOOP AGAIN DEC CL JNZ AGAIN ③ MOV CX,COUNT AGAIN:JCXZ NEXT …… JMP AGAIN NEXT:

例2 在内存BLOCK开始处存放了10个无符号字节数,从中找出最大值送入MAX单元中。 .MODEL SMALL .DATA BLOCK DB 100,60,20,…… MAX DB ? .CODE .STARTUP MOV CX,9 MOV AL,BLOCK LEA BX,BLOCK AGAIN:INC BX CMP AL,[BX] JAE NEXT XCHG AL,[BX] NEXT:LOOP AGAIN MOV MAX,AL .EXIT END

.MODEL SMALL AGAIN:MOV AL,[SI] .DATA ADC AL,[DI] DATA1 DD 02233585H 例3 多位十进制数相加:02233585+03703994,两数在内存中以DATA1 和DATA2为首址存入,各分配4个字节单元,以其8位组合BCD码存入(低位在前),两数相加结果(组合BCD码)送回DATA1处。 .MODEL SMALL .DATA DATA1 DD 02233585H DATA2 DD 03703994H .CODE .STARTUP LEA SI,DATA1 LEA DI,DATA2 CLC MOV CX,4 AGAIN:MOV AL,[SI] ADC AL,[DI] DAA MOV [SI],AL INC SI INC DI LOOP AGAIN .EXIT END

例4 在首地址BLOCK处存放了10个字数据(无符号数),编程求其和,存入SUM单元。 .MODEL SMALL .DATA BLOCK DW 1020H,3040H,… SUM DD ? .CODE .STARTUP MOV CX,10 LEA SI,BLOCK MOV AX,0 MOV DX,0 AGAIN:ADD AX,[SI] ADC DX,0 INC SI LOOP AGAIN MOV SUM,AX MOV SUM+2,DX .EXIT END

例4 方法二 .DATA ADC EAX,EBX BLOCK DW 1020H,3040H,… INC SI SUM DD ? INC SI 例4 方法二 .MODEL SMALL MOVZX EBX,BX .DATA ADC EAX,EBX BLOCK DW 1020H,3040H,… INC SI SUM DD ? INC SI .CODE LOOP AGAIN .STARTUP MOV SUM,EAX MOV CX,10 .EXIT LEA SI,BLOCK END MOV EAX,0 CLC AGAIN:MOV BX,[SI]

例5 两位十进制数乘法:25×80,被乘数和乘数以组合BCD码形式存于DATA1和DATA2两字节单元中,经乘法运算,乘积以组合BCD码形式存入DATA3定义的两个内存单元中。 .MODEL SMALL MOV CL,AL .DATA MOV CH,0 DATA1 DB 25H MOV BL,DATA2 DATA2 DB 80H MOV AX,0 DATA3 DW ? CLC .CODE AGAIN:ADC AL,BL .STARTUP DAA MOV AL,DATA1 XCHG AH,AL MOV BL,AL ADC AL,0 AND BL,0FH DAA AND AL,0F0H XCHG AH,AL MOV CL,4 LOOP AGAIN ROR AL,CL MOV DATA3,AX MOV BH,0AH .EXIT MUL BH END ADD AL,BL

例6 将内存首地址为BLOCK开始的10个带符号字节数,将其按由大到小的次序排列。 .MODEL SMALL .DATA BLOCK DB 66H,88H,10H,… .CODE .STARTUP MOV DI,9 LOOP1:MOV CX,DI MOV BX,0 LOOP2:MOV AL,BLOCK[BX] CMP AL,BLOCK[BX+1] JGE NEXT XCHG AL,BLOCK[BX+1] MOV BLOCK[BX],AL NEXT:INC BX LOOP LOOP2 DEC DI JNZ LOOP1 .EXIT END

4.5 子程序设计 4.5.1 过程定义 SUB1 PROC 过程名 PROC [TYPE] [USES REG] PUSH AX …… RET (或RET n) 过程名 ENDP 其中,TYPE 包括: NEAR FAR USER REG:要保护的通用寄存器 如 SUB1 PROC USES AX,BX,CX RET 等效于 SUB1 ENDP SUB1 PROC PUSH AX PUSH BX PUSH CX …… POP CX POP BX POP AX RET SUB1 ENDP

4.5.2 调用与返回指令 1、调用指令 CALL 过程名 CALL FAR PTR 过程名 2、返回指令 RET 或 RET n EIP(IP) 堆栈 新偏移地址 EIP(IP) CALL FAR PTR 过程名为段间调用,系统将: CS 堆栈 EIP(IP) 堆栈 新偏移地址 EIP(IP) 新段基址 CS 2、返回指令 RET 或 RET n

例1 输入一个字符,若其ASCII码小于41H,显示‘N’,否则显示‘C’。 .MODEL TINY .CODE .STARTUP MOV AH,1 INT 21H CMP AL,41H JB NEXT MOV BL,’C’ JMP P NEXT: MOV BL,’N’ P: CALL DISP .EXIT END DISP PROC MOV DL,BL MOV AH,2 INT 21H RET DISP ENDP