微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 ·...
TRANSCRIPT
![Page 2: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/2.jpg)
2
汇编语言的格式
语句行的构成
指示性语句
指令语句
汇编语言程序设计及举例
第4章 汇编语言程序设计
![Page 3: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/3.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/4.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/5.jpg)
5
知识点复习
汇编语言源程序的特点:
1、汇编语言源程序是分段的,通常每个模块程序包括数据段、堆栈段和若干代码段。
2、每个程序结构类似,可以复制。
![Page 6: 微机原理及应用202.115.159.62/upload/3ed76f44-80e3-48ef-990f-c71d635e6... · 2011-07-14 · 16 1、dos软件中断调用过程 (1)将功能调用号传送到ah中; (2)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/6.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/7.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/8.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/9.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/10.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/11.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/12.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/13.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/14.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/15.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/16.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/17.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/18.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/19.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/20.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/21.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/22.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/23.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/24.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/25.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/26.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/27.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/28.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/29.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/30.jpg)
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)把调用参数(入口参数)送到规定寄存器或存储](https://reader034.vdocuments.site/reader034/viewer/2022042211/5eb15062fcabc1455c27d49a/html5/thumbnails/31.jpg)
31
本课件根据本校教学大纲,结合教材,参考了国内多个大学的《微机原理及应用》课程的课件,主要参考文献如下:
1、钱晓捷,郑州大学,《微机原理及应用》课件
2、陈涛,河南工业大学,《微机原理及接口技术》(授课80+实验24)课件
3、作者不详,《计算机硬件技术》课件
4 、姚燕南,薛钧义主编, 《微型计算机原理与接口技术》, 高等教育出版社, 2004.11
5 、 Barry B.Brey ,《Intel 微处理器-从8086到Pentium系列体系结构、编程与接口技术》(第5版 英文影印版),高等教育出版社
6、周明德,《微型计算机系统原理及应用》,(第四版 上册),清华大学出版社, 2004.8
参考文献