微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 ·...

Post on 05-May-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

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

主讲:谢维成

http://xweicheng.ys168.comscxweicheng@yahoo.com.cn

西华大学 电气信息学院

2

汇编语言的格式

语句行的构成

指示性语句

指令语句

汇编语言程序设计及举例

第4章 汇编语言程序设计

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

知识点复习

4

MOV AX,MY_DATA

MOV DS,AX

LEA DX, INFO

MOV AH,09H

INT 21H

RET

MAIN ENDP

MY_CODE ENDS

END GO

知识点复习

5

知识点复习

汇编语言源程序的特点:

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

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 ……

7

知识点复习:数据段定义

DATA_BYTE

DATA_DW

DATA_WORD

10510H100H

100

-4

60

0FFFBH

0A051000016400FCFF3C000000FBFF0000

8

4.2 语句行的构成

指令性语句,其格式为:

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

GO: PUSH DS

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

变量 伪指令 操作数 ;注释

SUM DB ?

9

4.3.1 顺序程序设计(p178)

如“Hello XIHUA University !”程序

4.3.2分支程序设计(p181)

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

4.3.3 循环程序设计(p184)

如给内存重复赋值程序

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

10

4.3.4 子程序设计 (p189)

CSEG SEGMENTMAIN PROC FAR

…CALL SUBT…

RETMAIN ENDPSUBT PROC NEAR

…RET

SUBT ENDPCSSEG ENDS

11

4.4 汇编语言程序上机流程

开 始开 始

编 辑编 辑

编 译编 译

有错?

链 接链 接

执 行执 行

结果正确?

结束结束

源程序file.asm

目标程序file.obj

其它目标程序可执行程序

file.exe

不正确

正确

无MASMMASM

LINKLINK

EDIT或记事本

EDIT或记事本

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)

13

4.5 DOS及BIOS功能调用(P216)

什么是软件中断?

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

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

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

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

14

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

4.5.1 DOS功能调用 (P218)

15

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

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

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

4.5.1 DOS功能调用

16

1、DOS软件中断调用过程

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

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

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

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

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

4.5.1 DOS功能调用

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功能调用

18

(2)显示字符串

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

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

2、DOS显示功能调用

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显示功能调用

20

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

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

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

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

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

2、DOS显示功能调用

21

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

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

3、DOS键盘输入功能调用

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键盘输入功能调用

23

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

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

3、DOS键盘输入功能调用

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键盘输入功能调用

25

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

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

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

3、DOS键盘输入功能调用

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键盘输入功能调用

27

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

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

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

4. DOS功能调用综合应用

28

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

5. 内存操作

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. 字符操作

30

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

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

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

了解BIOS中断;

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

第4章 教学要求

31

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

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

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

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

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

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

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

参考文献

top related