Presentation is loading. Please wait.

Presentation is loading. Please wait.

第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口

Similar presentations


Presentation on theme: "第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口"— Presentation transcript:

1

2 第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口 第六章 计数器、定时器与接口 第七章 显示器与键盘接口 第八章 串行通信及接口 第九章 数模转换器和模数转换器接口

3 本章知识点 8086程序设计的实验平台 8086程序设计 8086/8088宏汇编语言程序 PC 机的基本硬件和调用 软中断

4 本章知识点 8086程序设计的实验平台 8086程序设计 8086/8088宏汇编语言程序 PC 机的基本硬件和调用 软中断

5 8086程序设计的实验平台 PC机的基本配置 动态调试程序DEBUG

6 PC机的基本配置 INTEL 8086是标准十六位微处理器,具有十六位内部结构和十六位外部数据总线。

7 PC机的基本配置 IBM PC以及PC兼容机以8088为CPU 8088可寻址存储器空间1M字节 PC机:
- RAM为640K字节,地址00000H~9FFFFH - ROM为64K字节,地址F0000H~FFFFFH,其中存有基本输入输出系统BIOS。

8 PC机的基本配置 存储器的其余空间为外部设备所需的存储器扩展或输入输出程序, A0000H~BFFFFH为显示器RAM缓冲区;
C0000H~DFFFFH为系统外部设备的输入输出程序; E0000H~EFFFFH为保留的64K字节,扩展功能用。

9 PC机的基本配置 00000H~003FFH为系统的中断矢量区;
640K字节的RAM中: 00000H~003FFH为系统的中断矢量区; 00400H以后为IBM BIOS、IBM DOS以及由DOS操作系统装入的程序区; 用户区在其之后。

10 PC机的基本配置 PC/AT以及兼容机(PC 286)以80286为CPU。
80286CPU实地址寻址的存储器空间为1M字节。在PC 286中,RAM及ROM的安排与PC机兼容。 PC或PC 286的基本配置为显示器、键盘、软盘驱动器、并行打印机接口、异步通讯接口。

11 动态调试程序DEBUG 显示、修改寄存器和存储器内容 跟踪程序的运行 支持汇编与反汇编,易于修改程序 通过读、写命令可读写磁盘文件
利用输入、输出指令直接对接口进行调试

12 动态调试程序DEBUG 检查和修改寄存器 Register - R ;显示所有寄存器内容 - R 寄存器 ;仅显示该寄存器内容,可修改其内容

13 动态调试程序DEBUG 检查和修改存储器内容 Memory - D ;显示存储器内容 - E ;显示和修改存储器内容 - F
;修改存储器内容

14 动态调试程序DEBUG 汇编与反汇编 Assembly and Un-assembly - A ;输入汇编语句 - U
;显示机器码及汇编语句

15 动态调试程序DEBUG 运行和测试程序 Go and Test - G ;从当前地址开始执行,地址由CS及IP决定
;程序从该地址开始执行,停在断点处 - T ;程序从当前地址开始执行一条 - T = 地址 跟踪条数 ;程序从该地址开始执行以上条数

16 动态调试程序DEBUG 文件的写入和读出Writing and Loading 存盘(写出) - R BX ;使BX内容为0
- R CX ;程序长度(字节数) - N ×××.ASM ;给程序命名 - W〔地址〕 ;〔程序首地址〕 文件名由N命名,长度由BX、CX值决定。 W后无地址则将CS:100H开始的数据写入磁盘。

17 动态调试程序DEBUG 文件的写入和读出Writing and Loading 读盘(读入) - N ×××.ASM - L 〔地址〕
L后无地址则装入以CS:100H为起始地址的内存中,否则装入规定地址。

18 动态调试程序DEBUG 输入、输出命令 Input & Output - I 端口地址 ;从该端口输入一个字节的内容
;向该端口输出一个字节内容

19 本章知识点 8086程序设计的实验平台 8086程序设计 8086/8088宏汇编语言程序 PC 机的基本硬件和调用 软中断

20 8086程序设计 程序设计方法 8086程序设计

21 程序设计方法 1.作程序流程图 根据题意,找出最合理、简便的解决方法并作程序流程图。粗略流程图给出大致步骤,详细流程图则给出每一步骤细节。对一些大问题,先给出粗略流程图以得出总体概念,再作详细流程图对每一步骤作具体描述。

22 程序设计方法 2.存贮单元分配 根据题意合理分配程序和数据在存贮器中地址。存贮单元分配合理,可使编程简单和避免程序出错。应避免程序区与数据区相互混合、交叉。 3.源程序编制 将流程图中每步所规定的操作用程序语言实现,各人所编程序选用指令可能不同。程序质量衡量标准:程序短,占用存贮单元少,运行时间短,而且程序结构合理。

23 程序设计方法 4.译为机器码 通常先作程序流程图再编源程序,流程图在: 复杂问题中:帮助设计者寻找最佳方案,减少源程序编写过程中的错误。
计算机执行的是机器码,根据不同计算机环境,将源程序译为机器码后送入计算机可由人工进行,也可通过计算机软件自动转换为机器码。 通常先作程序流程图再编源程序,流程图在: 复杂问题中:帮助设计者寻找最佳方案,减少源程序编写过程中的错误。 调试过程中:帮助寻找错误。

24 8086 程序设计 简单程序 8086指令系统中存储器采用分段方法,每个存储单元地址都用段地址和偏移量方法表示。
注意存储器寻址方法,特别是段寄存器用法。段替换时,替换命令只对本指令有效,而其余指令仍用约定的段寄存器表示段地址。

25 8086 程序设计 简单程序 MOV AX, 7000H MOV DS, AX MOV SI, 00H MOV AX, 8000H MOV ES, AX MOV DI, 00H MOV AL, [SI] MOV BL, [SI+1] MUL BL MOV ES:[DI], AX EX2D: JMP EX2D 例:将存储器70000H单元和70001H单元的内容相乘,其积存放在80000H(低字节)及800001H(高字节)中。

26 8086 程序设计 分支程序 转移指令来实现分支程序。8086指令系统的转移指令分为条件转移和无条件转移。
条件转移指令均为相对转移指令,目的地址必须在现行程序段(CS)内,以下一条指令地址为基准,范围为-128-+127。 无条件转移指令JMP转移的目的地址可以在段内,也可以在段间。

27 8086 程序设计 分支程序--条件转移指令

28 8086 程序设计 分支程序--条件转移指令

29 8086 程序设计 分支程序--条件转移指令

30 8086 程序设计 分支程序 ORG H TABLE DW H, H DW H, 2C00H ORG H ADD AX, AX MOV SI, H ADD SI, AX JMP CS:[SI] 例:设检索号(0~3)在累加器AX中,根据此检索号将当前程序转移到当前程序段内2000H,2400H,2800H,2C00H的程序中去。

31 8086 程序设计 循环程序 可用条件转移指令也可用LOOP指令实现循环程序。LOOP指令以CX为循环变量,执行此指令时,CX值自动减一。
(2) LOOPE(LOOPZ);CX不为零且ZF=1时继续循环 (3) LOOPNE(LOOPNZ);CX不为零且ZF=0时继续循环。

32 8086 程序设计 循环程序 另一个实现方法是利用串操作处理的重复指令REP。REP指令以CX为重复次数,当指令被重复执行一次,CX值自动减一 REP指令有三种: (1) REP (2) REPE(REPZ) (3) REPNE(REPNZ) REP指令与串操作指令MOVS、STOS配合使用,将这两条指令重复执行CX遍

33 8086 程序设计 循环程序 MOV AX, 7000H MOV DS, AX
MOV ES, AX MOV SI, 00H MOV DI, 00H MOV CX, 400H CLD REP MOVSW EXD:JMP EXD  例:在地址70000H开始的存储器中存有400H个字的数据(十六位数),将其传送到地址72000H开始的存储器单元中去。

34 8086 程序设计 子程序 用CALL指令来调用子程序 程序调用: - 段内调用 - 段间调用

35 8086 程序设计 子程序 段内调用的子程序入口地址表示法:
(1) 入口地址以十六位偏移量表示。执行此指令时,将指令指针寄存器IP的内容与其相加产生新的目的地址。 (2) 入口地址以数据存储器寻址方式读取一个十六位数据,或由寄存器提供一个十六位数据,装入指令指针寄存器IP,指令以此数据作为目的地址。

36 8086 程序设计 子程序 段间调用的子程序入口地址表示法:
(1) 指令以立即数形式提供两个十六位地址作为入口地址的偏移量与段地址。第一个十六位数装入指令指针寄存器IP,第二个十六位数装入段寄存器CS。 (2)指令中提供一存储器地址,利用数据存储器寻址方式从该地址读取两个十六位数据作为入口地址的偏移量与段地址,分别装入指令指针寄存器IP和段寄存器CS。

37 8086 程序设计 子程序 例:用调用子程序的方法做两个数的加法,利用将数据压入堆栈的方法传递参数。 MOV CX, 5 PUSH CX
CALL ADD POP CX EXD: JMP EXD ADD: MOV BP, SP MOV AX, [BP+2] ADD [BP+4], AX RET 例:用调用子程序的方法做两个数的加法,利用将数据压入堆栈的方法传递参数。

38 8086 程序设计 查表程序 根据检索号来求出相应结果。
8086指令系统中,用XLAT指令实现查表程序。数据表格放在数据段中,以DS为段地址,BX寄存器内为数据表格首地址的偏移量,AL寄存器内为检索号。此指令被执行时将BX的内容与AL的内容相加,其结果为数据地址的偏移量。 XLAT指令每次只读出一个字节数据,如数据表中每个数据的长度大于一个字节,则要分几次读出。

39 8086 程序设计 查表程序 查表程序还可用寄存器寻址、变址寻址、基址寻址等方法实现。其指令分别为: MOV AX,[DX]
   MOV AL,[SI]      MOV AX,[BX]  (仅适用于查表程序的数据表放在数据段DS内 ) 这种方法应将数据表首地址加上偏移量后传送到此寄存器。偏移量应是检索号乘以数据表内数据的字节长度。这种方法每次能根据需要读出一个或两个字节。

40 8086 程序设计 查表程序 例:设寄存器AL中的数为0~9,试将此数的立方以BCD码的形式存于AX寄存器内。 ORG 1000H
DB 00H,00H,01H,00H DB 08H,00H,27H,00H DB 81H,00H,25H,01H DB 16H,02H,43H,03H DB 12H,05H,29H,07H ORG H MOV SI, H MOV AH, 0 ADD AX, AX ADD SI, AX MOV AX, CS:[SI] EXD: JMP EXD 查表程序 例:设寄存器AL中的数为0~9,试将此数的立方以BCD码的形式存于AX寄存器内。

41 本章知识点 8086程序设计的实验平台 8086程序设计 8086/8088宏汇编语言程序 PC 机的基本硬件和调用 软中断

42 8086/8088 宏汇编语言程序 宏汇编语言的基本语法 源程序的结构 宏汇编程序的运行与调试 程序的返回 参数传递

43 宏汇编语言的基本语法 宏汇编语言语句的构成 [名称/标号:] 操作符 [操作数] [;注释] * 名称是给指令或存储单元起的名字
[名称/标号:] 操作符 [操作数] [;注释] X DW 7 START: MOV AX,DAT RET ; 只有操作符 * 名称是给指令或存储单元起的名字 * 标号表示这条指令的开始地址 * 每个语句必须有操作符

44 宏汇编语言的基本语法 操作符 MUL CX MOV AH,20H 指令助记符 * 8086指令系统 * 一个或两个操作数 伪指令
DB 28H,0AH,9FH,55H * 对汇编程序进行控制 * 可以有多个操作数

45 * 堆栈段、数据段、附加段、代码段都用该伪指令定义!
宏汇编语言的基本语法 段定义伪指令 段名 SEGMENT [定位类型] [组合类型] [类别] : 段主体 段名 ENDS * 堆栈段、数据段、附加段、代码段都用该伪指令定义!

46 宏汇编语言的基本语法 段定义中的可选项 定位类型缺省为节型(PARA),表示该段起始位置位于最后四位地址为零处
组合类型缺省为NONE,表示该段与其他模块中的逻辑段无关;STACK表示连接时将所有类别为STACK的同名段连一起,形成一个大堆栈;AT+地址表明该段的段地址 类别是单引号括起的字符串,可任意取,通常用STACK,DATA,EXTA和CODE

47 宏汇编语言的基本语法 过程定义伪指令 段名 PROC 过程类型 : 段主体 RET 段名 ENDP 过程类型: NEAR;FAR
(说明该子程序属于段内还是段间调用)

48 宏汇编语言的基本语法 段名、段地址与段寄存器 ASSUME指令 仅将段寄存器名字与逻辑段名字联系起来 MOV指令 对段寄存器赋值
* DOS操作系统装入执行文件时,对代码段和堆栈段的值作了规定,不必用赋值语句

49 宏汇编语言的基本语法 取值运算符 SEG 给出一个变量或标号的段地址 OFFSET 给出一个变量或标号的段地址 例:FIVE EQU 5
MOV AX,FIVE ;AX=5 MOV AX,SEG FIVE ;AX=5 所在地址的段地址 MOV AX,OFFSET FIVE ; AX=5 所在地址的偏移量地址

50 源程序的结构 代码段 堆栈段 数据段 附加段 : 各种指令构成的程序及数据常量 : 为堆栈保留空间 :数据常量、变量及为程序所保留的工作单元

51 源程序的结构 代 码 段 LAA SEGMENT PARA PUBLIC ‘CODE’ ASSUME CS:LAA, SS:STAC
ASSUME DS:DAT, ES:EXT ……….. LB PROC NEAR SUB AX, 8 MOV Y, AX RET LB ENDP LAA ENDS END START ;可有若干个子程序

52 源程序的结构 堆 栈 段 须指定组合类型 STACK ! STAC SEGMENT PARA STACK‘STACK’
DW 200H DUP(?) STAC ENDS 须指定组合类型 STACK !

53 宏汇编程序的运行与调试 编辑程序 PE2/EDLN 汇编程序 MASM 连接程序 LINK 源文件 XX . ASM 目标文件
XX . OBJ 执行文件 XX . EXE XX . MAP 可选 列表文件 XX . LST 交叉索引文件 XX . CRF CREF命令 可打印文件 XX . REF

54 程序的返回 利用软中断指令 利用RET指令 MOV AH,4CH PUSH DS INT 21H MOV AX,0 PUSH AX
标号 PROC FAR PUSH DS MOV AX,0 PUSH AX  (程序主体) RET

55 参数传递 参数调用 PSP段前缀: 80H:参数的个数(十六进制数) 81H~FFH:参数(ASCII码)
例:求52(执行程序PROG1可求n2)。 键入 >PROG1⊔5↙ 则: 80H 81H 82H 02H 20H 35H

56 本章知识点 8086程序设计的实验平台 8086程序设计 8086/8088宏汇编语言程序 PC 机的基本硬件和调用 软中断

57 PC 机的基本硬件和调用 PC 机的基本硬件及调用方法 扬声器 键盘及调用程序 显示器及调用程序

58 PC 机的基本硬件和调用 PC 机:微处理器、存储器、输入输出设备
主机箱:CPU、存储器、磁盘驱动器、并行接口、串行接口、扬声器接口等。其中扬声器接口、键盘接口、并行接口、串行接口、显示器和磁盘驱动器是使用较多的输入输出设备

59 PC 机的基本硬件和调用 BIOS 功能调用 BIOS:基本输入、输出系统 显示器、键盘、打印机等外部设备接口的调用程序 存放ROM 中
用 INT 类型号 的软中断指令来调用,显示器调用中断号为10H,键盘为16H

60 PC 机的基本硬件及调用方法 DOS 功能调用 DOS 提供给用户程序可调用的功能子程序 分设备管理、文件管理、目录管理等
用INT 类型号 的软中断指令来调用,显示器、键盘的调用中断号为 21H

61 扬声器 扬声器控制电路 INTEL 8255A的PB0口控制INTEL 8253通道2是否工作;

62 键盘及调用程序 键盘的BIOS调用程序采用中断号16H
键操作将引起硬件中断,将键盘的数据送入键盘输入缓冲器,缓冲器中数据可通过BIOS调用程序或DOS功能调用程序读出。

63 键盘及调用程序 键盘的DOS调用程序采用中断号21H

64 显示器及调用程序 CGA显示 字符显示—字符块8*8,字符5*7或7*7 8K RAM:40*25个字符 8页 80*25个字符 4页
80*25个字符 4页 首页地址:B8000H

65 显示器及调用程序 字符显示的位置和显示缓冲器的关系

66 显示器及调用程序 CGA显示 图形显示—显示内存的位对应显示器上的点 16K RAM 偶数行首地址B8000H 奇数行首地址BA000H
高分辨率—200行×640点/行,每位对应一点 (1亮,0不亮) 中分辨率—200行×320点/行,每两位对应一 点,与彩色寄存器(地址3D9H) 中的D5一起决定象元的颜色

67 显示器及调用程序 图形显示的位置和显示缓冲器的关系

68 显示器及调用程序 图形显示的位置和显示缓冲器的关系

69 显示器及调用程序 编程方法 字符显示:设定字符模式和彩色选择寄存器; 在显示存储器中写入字符及其属性。
图形显示:设定图形模式和彩色选择寄存器; 显示图形分奇数行和偶数行写入显示存储器。 显示器的BIOS和DOS功能调用 功能号—AH 中断号—10H(BIOS调用);21H(DOS调用)

70 显示器及调用程序 例:用CGA的高分辨率方式在显示屏上显示一斜线 起点座标为(320,100) 终点座标为(335,115)

71 显示器及调用程序 写像点: AH = 0CH INT 10H DX = 像点行号 CX = 像点列号 AL = 像点颜色

72 显示器及调用程序 程序示例 黑/白图形方式(640*200) CGA
: START: MOV AL, 6 CALL SETMODE MOV BX, 10H MOV AL, 1 MOV CX, MOV DX, 100 LP: CALL DISP INC CX INC DX DEC BX JNZ LP 共画16点 像点颜色 第一点位置

73 显示器及调用程序 程序示例 SETMODE PROC NEAR MOV AH,0 INT 10H 显示模式设置,AL=6 RET
SETMODE ENDP 显示模式设置,AL=6 画点,位置由CX、DX决定 DISP PROC NEAR MOV AH, 0CH INT 10H RET DISP ENDP

74 显示器及调用程序 例:用图形模块的方式在显示屏上显示一图形“0”
图形点阵为16X16,从第0行的第624点开始显示,对应的起始地址为B804EH 先建立图形“0”的点阵数据 将此数据复制到B804EH开始的地址中

75 显示器及调用程序 程序示例 图形模块数据的建立 DATA SEGMENT PARA PUBLIC'DATA'
DAT DB 1FH,80H,20H,40H,60H,60H,60H,60H DB 60H,60H,60H,60H,60H,60H,60H,60H DB 60H,60H,20H,40H,1FH,80H,00H,00H DATA ENDS

76 显示器及调用程序 程序示例 定义图形模块数据的地址 MOV AX,0B800H MOV ES,AX MOV SI,0 MOV DI,4EH
CALL BL16 定义显示屏位置 数据复制

77 显示器及调用程序 程序示例 复制程序 CLD LBCL1: MOV CX,8 LBCL2: MOV BX,2 LBCL3: MOVSB
DEC BX JNZ LBCL3 ADD DI,4EH ADD SI,2 LOOP LBCL2 CMP SI,22H JZ LBCL5 ADD DI,1D80H MOV SI,2 JMP LBCL1 复制程序

78 本章知识点 8086程序设计的实验平台 8086程序设计 8086/8088宏汇编语言程序 PC 机的基本硬件和调用 软中断

79 软中断 中断指令 INT N;N=0~255,对应的中断矢量表 中断过程 依次存放在存储器最低的1K字节中。
1. PSW入栈:PSW(SP),SP-2 SP 2. 清除TF、IF 3. CS入栈: CS(SP),SP-2 SP 4. IP入栈: IP(SP),SP-2 SP 5. 进入N#中断:(N*4)IP,(N*4+2)CS

80 软中断 注意事项 应避开系统所规定的中断类型; 习惯上采用STI指令开放中断; 填写中断向量表的方法: 1)开辟一数据段
中断号中断向量表的地址用MOV指令 传送中断服务程序的段地址与偏移量 2)利用DOS系统功能调用:AH=25H


Download ppt "第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口"

Similar presentations


Ads by Google