汇编语言程序设计课件-7(new)

合集下载

汇编语言程序设计教程版PPT课件

汇编语言程序设计教程版PPT课件
• 学好这门课程,可为学习相关的专业课打下基础, 它是《微机原理及接口技术》、《操作系统》、 《计算机组成原理》、《编译原理》和《单片机 原理及应用》等的前导课程。
2020/12/29
汇编语言程序设计教程
3
目录
第1章 汇编语言基础知识 第2章 微型计算机体系结构 第3章 微型计算机的指令系统 第4章 伪指令与汇编语言程序结构设计 第5章 汇编语言程序设计 第6章 子程序设计 第7章 输入/输出程序设计 第8章 高级汇编技术 第9章 DOS/BIOS功能调用 第10章 汇编语言上机环境及程序设计实例
汇编语言程序设计教程
17
计算机硬件组成
• 运算器是对信息或数据进行处理和运算的部件, 可以实现各种算术运算和逻辑运算。
• 控制器(Control Unit, CU)主要用来实现计算机 本身运行过程的自动化,即实现程序的自动执行, 是计算机的管理机构和指挥中心。
• 存储器是计算机的存储和记忆装置,用来存储程 序和数据,由存储单元组成。
冲数,以MHz(兆赫兹)为单位。 • 存储器容量的大小不仅影响着存储程序和数据的多少,而且也影响着
运行这些程序的速度。
• 存储器完成一次数据的读(取)或写(存)操作所需要的时间称为存 储器的存取(或访问)时间。存储器执行一次完整的读/写操作所需要 的时间称为存取周期。
• 系统的可靠性通常用平均无故障时间MTBF和平均故障修复时间 MTTR来表示。
• 高性能:尖端科技领域的信息处理,需要超大容量、高速度的 计算机系统。人们对于高性能计算机的追求是无止境的。
• 智能化:模拟人类大脑思维和交流方式,具有多种处理能力, 如智能机器人等。
• 系列化、标准化:便于各种计算机硬、软件兼容和升级。

汇编语言程序设计第1章汇编语言基础知识PPT课件

汇编语言程序设计第1章汇编语言基础知识PPT课件

2018/12/11
第1章
汇编语言基础知识
17
《汇编语言程序设计》
词汇表
23.数据段 数据段存放当前运行程序所用的数据,数据段的段地址存放在 DS中。 24.附加段 附加段是附加的数据段,也用于数据的保存,另外,串操作指令 将附加段作为其目的操作数的存放区域。附加段的段地址存放在ES中。 25.堆栈段 堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆 栈指针寄存器SP指示堆栈栈顶的偏移地址,处理器利用SS:SP操作堆 栈中的数据。
2018/12/11
第1章
汇编语言基础知识
16
《汇编语言程序设计》
词汇表
21.物理地址 在1M字节的存储器里,每一个存储单元都有一个唯 一的20位地址,称为该存储单元的物理地址,把段地址左 移4位再加上偏移地址就形成物理地址。 22.代码段 程序员在编制程序时要把存储器划分成段,代码段用 来存放程序的指令序列,代码段的段地址存放在CS中,指 令指针寄存器IP指示代码段中指令的偏移地址,处理器利 用CS:IP取得下一条要执行的指令。
词汇表
2.汇编语言 汇编语言是一种符号语言,几乎和机 器语言一一对应,它采用便于记忆、并能 描述指令功能的符号来表示机器指令,比 机器语言容易理解和掌握。
2018/12/11
第1章
汇编语言基础知识
6
《汇编语言程序设计》
词汇表
3.汇编语言源程序 用汇编语言编写的程序称为汇编语言 源程序,简称源程序。
2018/12/11
第1章 汇编语言基础知识
19
《汇编语言程序设计》
词汇表
29.子程序 子程序又称为过程,它相当于高级语言中的过程和函数。在一个 程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结 构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段 写成子程序形式,以便需要时可以调用它;某些常用的特定功能的程 序段也可编制成子程序的形式供用户使用。 30.中断 中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操 作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输 出请求,也可能是计算机的一些异常事故或其它内部原因。

汇编语言程序设计PPT课件

汇编语言程序设计PPT课件

DB 0AH,0BH,20
则 (1000H)=34H (1002H)=41H
(1001H)=49H (1003H)=42H
(1004H)=0AH
(1005H)=0BH
(1006H)=14H
(4) DW 定义字指令 定义程序存储器中存放的若干个字的数据或ASCII 码字符16位常数表 格式 DW<16位数据表>。
常用程序结构: 顺序程序、循环程序、分支程序、查表程序、子程
5.2 顺序与循环程序设计
❖5.2.1 顺序程序设计(又称简单程序) 既无分支,又无循环,按照顺序执行 可完成一定的基本功能,是编写复杂程序的 基础
例1:将一个字节内的两个BCD码拆开并变成ASCII码, 存入两个RAM单元。BCD码放在内RAM的20H, 转换后高半字节放到21H,低字节放22H。
第5章 汇编语言程序设计
教学目的:熟悉80C51系列单片机的汇编语言,能 够熟练编写汇编语言源程序。 教学重点:常用汇编语言程序设计方法。 教学难点: 分支程序、散转程序与子程序的设计
5.1 概 述
5.1.1 程序设计语言 ❖程序设计语言:机器语言、汇编语言、高级语言 ❖机器语言不易识别和记忆,使用不便,很难用它
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21 0011
;完成转换 @R0 ;存数
H22HB0C001D0HBCD 01000L
END
回目录 上页 下页
5.2.2 循环程序
包含多次重复执行的程序段,循环结构使程序紧凑。
各个环节任务: 一.初始化部分(循环初态)
来进行程序设计。 汇编语言
图5-1 源程序、汇编程序、目的程序之间关系示意图

汇编语言程序设计教程PPT-第7章

汇编语言程序设计教程PPT-第7章
1
user32.dll 提供用户接口服务功能,包括创建窗口和传递消息等。
2
gdi32.dll 提供图形设备接口,实现文本及图形的显示操作。
3
第七章 Win32汇编语言程序设计
invoke 函数名 [,参数1] [,参数2]
invoke MessageBox, NULL, addr szgreet, addr sztilte, MB_OK
第七章 Win32汇编语言程序设计
第七章 Win32汇编语言程序设计
(3)窗口程序的主要代码分析(模块和句柄、注册窗口类、建立窗口、窗口过程)
(2)窗口程序的运行过程
Win32窗口程序实例: 消息传递机制 代码分析
7.4 汇编语言与VC++的混合编程
嵌入式汇编语言指令及编程方法
(1)嵌入式汇编指令
源程序结构、源程序的模式定义与段定义 在Win32环境下,应用程序可以寻址4GB空间。
API函数的使用(包含声明文件、调用API函数)
Win32汇编的编程环境(命令行编程环境、集成开发 环境)
7.1 Win32汇编语言程序设计基础
.386 ;指定可使用处理器指令集 .model flat, stdcall ;模式定义 option casemap:none ;指定汇编选项 <若干条include 语句> ;包含API函数和动态链接库头文件 .stack [堆栈段大小] ;定义堆栈段 .data ;数据段(定义初始化变量) <初始化变量定义> .data? ;数据段(定义未初始化变量) <未初始化的变量定义> .const ;定义常量段 <常量定义> .code ;定义代码段 <开始标号> <若干语句> end 开始标号 ;源程序结束
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;出口参数:无 出口参数:
MOV MOV AND OR MOV
通过寄存器传递参数应用举例——P135页 【7-3】 P135页 1 通过寄存器传递参数应用举例 P135
0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H
2010-4-27
12H 24H 96H 32H 31H 34H 32H 36H 39H
汇编语言程序设计
20102010-4-27
子程序的定义, 7.3 子程序的定义,调用和返回
2.现场保护和现场恢复 2.现场保护和现场恢复
例:子程序SUB1中用到了寄存器AX,BX,CX,DX,则可以在子程序中进行 子程序SUB1中用到了寄存器AX,BX,CX,DX, SUB1中用到了寄存器AX 现场的保护和恢复工作: 现场的保护和恢复工作: SUB1 PROC PUSH AX PUSH BX PUSH CX PUSH DX ┆ POP DX POP CX POP BX POP AX RET SUB1 ENDP
;入口参数:AX和BX中存放两个正整数; 入口参数: 除以 中存放两个正整数 和 2. 用M除以 中存放两个正整数; 除以N,求得余数 ,求得余数R 中存放求得的最大公约数; ;出口参数:CX中存放求得的最大公约数; 出口参数: 中存放求得的最大公约数
MOV BX,DX ;更新除数
JMP 3. 如果 如果R=0,N就是所求的最大公约数; AGAIN ;继续循环 就是所求的最大公约数; , 就是所求的最大公约数 PROC
子程序名: 子程序名: MAXN
2010-4-27
MAXN
7.4 子程序的参数传递方法
主程序 K: 调用子程序 调用子程序A DK:…… : 子程序A 子程序
J: 调用子程序 调用子程序A DJ:…… :
返回主程序
参数传递方式: 参数传递方式: 堆栈传递, 寄存器传递 ,堆栈传递,存储单元传递
汇编语言程序设计 20102010-4-27
;最大公约数存入CX 最大公约数存入CX
;恢复现场
习题1 根据以下子程序说明文件,编写一段子程序. 习题1:根据以下子程序说明文件,编写一段子程序. PROC 子程序功能: 子程序功能:求一组带符号字节数据 PUSH SI 中最大数 . PUSH CX 入口参数: 指向数组首地址 入口参数: SI指向数组首地址 MOV AL,[SI] CX为数据个数 为数据个数 NEXT1:CMP AL,[SI] 出口参数: 出口参数: AL为数组中最大数 为数组中最大数 JGE NEXT2 MOV AL,[SI] NEXT2:INC SI LOOP NEXT1 POP CX POP SI RET MAXN ENDP
汇编语言程序设计
20102010-4-27
【例7-1】求两个数的最大公约数子程序 】
;子程序名:MCDST 子程序名: 辗转相除法: 辗转相除法: ;功 求两个正整数的最大公约数; 能取两个正整数 和N( ; 1. :求两个正整数的最大公约数N<=M) 取两个正整数M和 ( )
MOV AX,BX
;更新被除数
汇编语言程序设计
;现场保护
;子程序处理部分
;现场恢复
恢复现场时寄存器出现的顺序应与 保护现场时寄存器出现的顺序相反
20102010-4-27
子程序的定义, 7.3 子程序的定义,调用和返回
3.子程序调用方法说明 3.子程序调用方法说明
包括: 包括: (1)子程序名; 子程序名; (2)子程序功能; 子程序功能; (3)占用寄存器; 占用寄存器; 入口参数; (4)入口参数; (5)输出参数; 输出参数; (6)子程序调用示例. 子程序调用示例.
MCDST
否则, - 否则,N->M, R->N.继续执行 MOV CX,BX - .继续执行2. EXIT: .
;保护现场 POP DX POP BX POP AX RET ;余数为0转EXIT 余数为0 MCDST ENDP
;最大公约数存入CX 最大公约数存入CX
PUSH AX PUSH BX PUSH DX
ASCBUF
CX寄存器发生冲突!!! 寄存器发生冲突!!! 寄存器发生冲突
CX CL, 4 BL, CL BL, 30H [DI+1], BL SI DI DI CX LP
1 通过寄存器传递参数
LP: ;子程序名:DISP 子程序名: 功能:显示ASCII码字符 ;功能:显示 码字符 入口参数: 码在DL中 ;入口参数:ASCII码在 中 码在
;恢复现场
AX值扩展到DXAX中 值扩展到DXAX AGAIN: XOR DX,DX ;AX值扩展到DXAX中 DIV BX AND DX,DX
2010-4-27
;商存入AX,余数存入DX 商存入AX,余数存入DX AX
;返回主程序
JZ EXIT
子程序的定义, 7.3 子程序的定义,调用和返回
5. 子程序的调用和返回
汇编语言程序设计 20102010-4-27
MCDST PROC NEAR/FAR DATA 7-2】假设在字缓冲区BUF中存放有四个正整数 SEGMENT 中存放有四个正整数, 【 - 】假设在字缓冲区 中存放有四个正整数,试编程 PUSH AX ;保护现场 BUF DW 720, 80, 1250, 25 求前两个数,后两个数的最大公约数M和 . 求前两个数,后两个数的最大公约数 和N. M DW ? PUSH BX N DW ? PUSH DX DATA ENDS AGAIN: XOR DX,DX CODE SEGMENT DIV BX ASSUME CS:CODE, DS:DATA AND DX,DX START: MOV AX, DATA JZ EXIT MOV DS, AX MOV MOV CALL MOV MOV MOV CALL MOV MOV 2010-4-27 INT AX, BUF BX, BUF+2 MCDST M, CX AX, BUF+4 BX, BUF+6 MCDST N, CX AH, 4CH 21H MOV AX,BX MOV BX,DX JMP AGAIN EXIT: MOV CX,BX POP DX POP BX POP AX RET MCDST ENDP CODE ENDS END START ;更新除数 ;继续循环
SP ← SP+2 SP ← SP+2
功能: ←(SP) SP ← SP+2 功能:IP ←(SP) ←(SP) SP ← SP+2 S ←(SP) SP ← SP + n
汇编语言程序设计 20102010-4-27
子程序的定义, 7.3 子程序的定义,调用和返回
子程序定义伪指令 现场保护与恢复 子程序调用方法说明 子程序的设计方法 (举例) 举例) 子程序的调用和返回(举例) 子程序的调用和返回(举例)
汇编语言程序设计
20102010-4-27
子程序的定义, 7.3 子程序的定义,调用和返回
1.子程序定义伪指令 1.子程序定义伪指令 格式: 格式: 子程序名〉 〈子程序名〉 PROC ┆ ┆ RET 子程序名〉 〈子程序名〉 ENDP NEAR / FAR
(1)主程序和子程序在同一代码段中,定义为NEAR型. 主程序和子程序在同一代码段中,定义为NEAR型 NEAR (2)主程序和子程序不在同一代码段中,定义为FAR型. 主程序和子程序不在同一代码段中,定义为FAR型 FAR
BCDBUF
LEA SI, BCDBUF LEA DI, ASCBUF MOV CX, 3 LP: MOV MOV AND OR MOV PUSH MOV SHR OR MOV INC INC INC POP LOOP AL, BL, AL, AL, [DI], [SI] AL 0FH 30H AL
汇编语言程序设计

返回主程序
20102010-4-27
7.1 子程序概述
一般子程序具有以下几个特性: 一般子程序具有以下几个特性: 功能独立 可重复性 通用性 可浮动性 可递归性和可重入性
汇编语言程序设计
20102010-4-27
7.1 子程序概述
在设计子程序时,应该解决如下几个问题: 在设计子程序时,应该解决如下几个问题: 主程序是怎样调用子程序的. 主程序是怎样调用子程序的. 子程序执行完后, 子程序执行完后,怎样才能返回到主程序的断 点处继续往下执行. 点处继续往下执行. 如何编写子程序. 如何编写子程序. 主程序与子程序之间用什么方式互相传递数据, 主程序与子程序之间用什么方式互相传递数据, 既主程序如何将数据传送给子程序, 既主程序如何将数据传送给子程序,子程序执行 后如何将结果返回给主程序. 后如何将结果返回给主程序.
20102010-4-27
汇编语言程序设计
7.2 子程序的调用和返回指令
子程序调用指令 CALL 段间直接调用 子程序名> 格式: CALL FAR PTR <子程序名 格式: 子程序名 功能: 功能 (1) SP← SP-2 (SP)← CS ) ) SP← SP-2 (SP)← IP ) 2) ←子程序入口地址的偏移地址 (2) IP ←子程序入口地址的偏移地址 CS←子程序入口地址的段地址 子程序入口地址的段地址 段间间接调用 格式: 格式 CALL DWORD PTR DST 功能: 功能 (1) SP← SP-2 (SP)← CS ) ) SP← SP-2 (SP)← IP ) (2) IP ←DST的低字内容 ) 的低字内容 CS←DST的高字内容 的高字内容
第七章 子程序设计
7.1 子程序概述 7.2 子程序调用和返回指令 7.3 子程序的定义,调用和返回(重点) 子程序的定义,调用和返回(重点) 7.4 子程序的参数传递方法 通过寄存器传递参数 通过堆栈传递参数 通过存储单元传递参数
相关文档
最新文档