31
1 微机原理及应用 微机原理及应用 主讲:谢维成 http://xweicheng.ys168.com [email protected] 西华大学 电气信息学院

微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

1

微机原理及应用微机原理及应用

主讲:谢维成

http://[email protected]

西华大学 电气信息学院

Page 2: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

2

汇编语言的格式

语句行的构成

指示性语句

指令语句

汇编语言程序设计及举例

第4章 汇编语言程序设计

Page 3: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

3

8086汇编语言程序举例MY_DATA SEGMENT

INFO DB ‘Hello XIHUA University !’MY_DATA ENDS

MY_CODE SEGMENT

ASSUME CS:MY_CODE,DS:MY_DATA

MAIN PROC FAR

GO: PUSH DS

MOV AX,0

PUSH AX

知识点复习

Page 4: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

4

MOV AX,MY_DATA

MOV DS,AX

LEA DX, INFO

MOV AH,09H

INT 21H

RET

MAIN ENDP

MY_CODE ENDS

END GO

知识点复习

Page 5: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

5

知识点复习

汇编语言源程序的特点:

1、汇编语言源程序是分段的,通常每个模块程序包括数据段、堆栈段和若干代码段。

2、每个程序结构类似,可以复制。

Page 6: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

6

知识点复习:数据段定义

例1:

DATA SEGMENTS

DATA_BYTE DB 10,5,10H

DATA_WORD DW 100H,100,-4

DATA_DW DD 2*30,0FFFBH

NUM0 DB 100 DUP (0)

NUM1 DW 10 DUP (?)

NUM3 DB 10 DUP (1,2,3)

DATA ENDS

;1,2,3, 1,2,3 1,2,3 1,2,3 ……

Page 7: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

7

知识点复习:数据段定义

DATA_BYTE

DATA_DW

DATA_WORD

10510H100H

100

-4

60

0FFFBH

0A051000016400FCFF3C000000FBFF0000

Page 8: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

8

4.2 语句行的构成

指令性语句,其格式为:

标号:(前缀)指令助记符 操作数;注释

GO: PUSH DS

指示性语句,又叫伪指令,其格式为:

变量 伪指令 操作数 ;注释

SUM DB ?

Page 9: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

9

4.3.1 顺序程序设计(p178)

如“Hello XIHUA University !”程序

4.3.2分支程序设计(p181)

如判断一个带符号数的正负

4.3.3 循环程序设计(p184)

如给内存重复赋值程序

4.3 实地址方式下汇编语言程序设计

Page 10: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

10

4.3.4 子程序设计 (p189)

CSEG SEGMENTMAIN PROC FAR

…CALL SUBT…

RETMAIN ENDPSUBT PROC NEAR

…RET

SUBT ENDPCSSEG ENDS

Page 11: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

11

4.4 汇编语言程序上机流程

开 始开 始

编 辑编 辑

编 译编 译

有错?

链 接链 接

执 行执 行

结果正确?

结束结束

源程序file.asm

目标程序file.obj

其它目标程序可执行程序

file.exe

不正确

正确

无MASMMASM

LINKLINK

EDIT或记事本

EDIT或记事本

Page 12: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

12

周明德版第3版在P177,第4版在P149

在C语言中有scanf和printf语句实现从键盘输入和从CRT上显示的功能

scanf("%d",&x);

printf(“\n学生姓名: %c\n",name);

在汇编语言中实现从键盘输入和从CRT上显示的功能只能通过调用DOS功能和BIOS软件中断。

4.5 DOS及BIOS功能调用(P216)

Page 13: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

13

4.5 DOS及BIOS功能调用(P216)

什么是软件中断?

完成计算机一些基本功能的子程序,8086软件中断包括:

DOS中断(20H-3FH)已用20H-27H

ROM BIOS中断(10H-1FH),在ROM中

自由中断(40H-FF)自己开发的中断

Page 14: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

14

DOSDOS功能中断实际上就是功能中断实际上就是DOSDOS提供的一组计算机基本提供的一组计算机基本功能子程序,下表是部分键盘输入及显示中断。功能子程序,下表是部分键盘输入及显示中断。

4.5.1 DOS功能调用 (P218)

Page 15: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

15

操作系统的核心是由许多有关I/O驱动、磁盘读写以及文件管理等子程序构成。这些子程序都编了号,可由汇编语言源程序调用。

实际上计算机提供DOS中断调用和BIOS中断调用,开放计算机的基本功能,如I/O驱动、磁盘读写以及文件管理等。

在调用时一般分四个步骤。

4.5.1 DOS功能调用

Page 16: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

16

1、DOS软件中断调用过程

(1)将功能调用号传送到AH中;

(2)把调用参数(入口参数)送到规定寄存器或存储器区域中;

(3)发中断命令INT 21H;

(4)在返回参数(出口参数)寄存器或存储器区查询执行结果;

与高级语言函数调用相似:p2=round(p,5,1)

4.5.1 DOS功能调用

Page 17: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

17

2、DOS显示功能调用

(1)显示一个字符

例1:在CRT显示器上显示字符“5”,程序段如下:

MOV AH,02H;将功能号02(从中断表中查询)传送到AH中

MOV DL,35H;把“5”的ASCII码传送到调用参数DL中

INT 21H;发中断命令INT N

调试程序演示…… disp2.asm

4.5.1 DOS功能调用

Page 18: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

18

(2)显示字符串

被显示的字符串必须以’$’结束,且所显示的

内容不应出现非可见的ASCII码,否则产生不可预料的结果。

2、DOS显示功能调用

Page 19: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

19

例2:在CRT显示器上显示“Hello World!”:Data segmentBuffer db “Hello World!”,”$”Data ends

……mov ah,09h;将功能号09传送到AH中

lea dx,buffer;把字符串的起始地址送到DX中

int 21h;发中断命令INT N……

调试程序演示…… disp9.asm

2、DOS显示功能调用

Page 20: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

20

例例33:在显示器上循环显示数字:在显示器上循环显示数字““01234567890123456789””5050遍,最好显示一个字符后有延时,遍,最好显示一个字符后有延时,提示提示::

……MOV AH,02H;将功能号02(从中断表中查)传送到AH中

MOV DL,AL;把要显示的ASCII码传送到调用参数DL中INT 21H;发中断命令INT NINC AL;每次显示后把数字的ASCII码加1后循环

……可以用循环程序做为延时

实验调试程序……作为作业在实验室调试

2、DOS显示功能调用

Page 21: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

21

(1)从键盘输入一个字符(有回显)

从键盘输入的字符在AL中。执行INT 21H后从AL中取输入的结果。

3、DOS键盘输入功能调用

Page 22: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

22

例4:从键盘输入一个字符回显并保存:Data segmentBuffer db 10 dup(?)Data ends

……lea bx,buffer;把保存输入字符的起始地址送到BX中

mov ah,01h;将功能号01传送到AH中

int 21h;发中断命令INT Nmov [bx],al;从返回参数AL中取键盘输入结果并保存

……

调试程序演示…… input1.asm

3、DOS键盘输入功能调用

Page 23: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

23

(2)从键盘输入一个字符(无回显)

从键盘输入的字符在AL中。执行INT 21H后从AL中取输入的结果,但输入的字符在显示器上无显示。

3、DOS键盘输入功能调用

Page 24: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

24

例5:从键盘输入一个字符不回显并保存,要求每输入一个字符显示一个“*”:

Data segmentBuffer db 10 dup(?)Data ends

……lea bx, buffer;把保存输入字符的起始地址送到BX中

mov ah,07h;将功能号07传送到AH中

int 21h;发中断命令INT Nmov [bx],al;从返回参数AL中取键盘输入结果并保存

……

调试程序演示…… input7.asm

3、DOS键盘输入功能调用

Page 25: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

25

(3)从键盘输入字符串(有回显)

调用该键盘输入中断前必须定义与之相符合的内存数据区,注意[DX][DX+1]和[DX+2]中存放的数据意义。

真正输入的字符是在输入缓冲区的第3个字节开始,即[DX+2]单元开始。

3、DOS键盘输入功能调用

Page 26: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

26

例6:从键盘输入一串字符,并换行显示:Data segmentBuffer db 10,?,10 dup(?),”$”Data ends

……lea dx,buffer;把输入缓冲区起始地址送到DX中

mov ah,0ah;将功能号0A传送到AH中

int 21h;发中断命令INT N……

调试程序演示…… input0a.asm

3、DOS键盘输入功能调用

Page 27: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

27

有关I/O的DOS功能调用的综合应用

例7:编程实现模拟计算机开机密码输入过程即显示“Password:”,等待用户输入密码(

1-6位),每输入一个字符显示一个‘*’,要求把输入的口令存储在buffer为起始地址的内存区域。(要求书写汇编语言源程序,下次实验中调试)

4. DOS功能调用综合应用

Page 28: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

28

例 8 定 义 数 据 区 BUFFER1 ( 100 个 字 节 数 ) ,BUFFER2(100个字节数),BUFFER3(保留100个字节),实现BUFFER1区的第1个数与BUFFER2区的第100个数相加,BUFFER1区的第2个数与BUFFER2区的第99个数相加 ......直到实现BUFFER1区的第100个数与BUFFER2区的第1个数相加,且结果依次存储在BUFFER3区。

5. 内存操作

Page 29: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

29

例9:编程实现从键盘输入10个字母(“A-Z”或“a-z”中的任10个),并改变大小写换行显示,例如:输入“fHhFHhajAD”

显示“FhHfhAJad”Data segmentBuffer db 10,?,10 dup(?),”$”Data ends

……lea dx,buffer;把输入缓冲区起始地址送到DX中mov ah,0ah;将功能号0A传送到AH中int 21h;发中断命令INT N……

调试程序演示……作为作业在实验室调试

6. 字符操作

Page 30: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

30

掌握汇编语言源程序的结构;

掌握汇编语言源程序的设计以及调试方法;

掌握汇编语言的字符处理、内存操作、DOS调用程序设计方法;

了解BIOS中断;

习题与思考题(第228-229页)—1-3;10;11;12

第4章 教学要求

Page 31: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储

31

本课件根据本校教学大纲,结合教材,参考了国内多个大学的《微机原理及应用》课程的课件,主要参考文献如下:

1、钱晓捷,郑州大学,《微机原理及应用》课件

2、陈涛,河南工业大学,《微机原理及接口技术》(授课80+实验24)课件

3、作者不详,《计算机硬件技术》课件

4 、姚燕南,薛钧义主编, 《微型计算机原理与接口技术》, 高等教育出版社, 2004.11

5 、 Barry B.Brey ,《Intel 微处理器-从8086到Pentium系列体系结构、编程与接口技术》(第5版 英文影印版),高等教育出版社

6、周明德,《微型计算机系统原理及应用》,(第四版 上册),清华大学出版社, 2004.8

参考文献