计算机应用专业数据库技术教学大纲.docx
《计算机应用专业数据库技术教学大纲.docx》由会员分享,可在线阅读,更多相关《计算机应用专业数据库技术教学大纲.docx(25页珍藏版)》请在冰点文库上搜索。
![计算机应用专业数据库技术教学大纲.docx](https://file1.bingdoc.com/fileroot1/2023-7/20/2f932adb-64e1-4cb8-ab08-1fb68df07c78/2f932adb-64e1-4cb8-ab08-1fb68df07c781.gif)
计算机应用专业数据库技术教学大纲
《汇编语言程序设计(实践)》课程教学大纲
一、课程的性质和任务
课程性质:
《汇编语言程序设计(实践)》是计算机类专业《计算机组成与汇编》课程的后续课程设计课程。
本课程的任务是:
通过课程设计,为学生提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生实际编程的能力。
本课程教学应达到的基本要求是:
利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,帮助学生熟悉程序的设计、编写与调试过程。
二、时间安排
本课程设计时间为一周(28学时),题目提前两周布置,使学生作好准备。
具体时间安排如下:
1.分析设计准备阶段(周一)
2.编程调试阶段(周二至周四)
3.总结报告和书写说明书阶段(周三至周四)
4.考核阶段(周五)
三、课题内容:
提供以下备选课题:
1.动画程序
2.图形程序
3.乐曲演奏程序
四、组织管理:
对学生分组,每组1~2人,每组必须完成以上1、3或2、3两题。
五、考核评估:
成绩分优、良、及格和不及格四等,从以下几方面考核:
1.程序设计的可用性,实用性,通用性,可扩充性(40%)
2.学生的动手能力,创新精神(30%)
3.总结报告(10%)
4.答辩水平(20%)
主编:
王富荣
主审:
姚培华
附录
《汇编语言程序设计(实践)》课程补充知识
8086/8088微机的显示系统由显卡(又称显示适配器)和显示器组成。
显卡是计算机和显示器之间的接口,根据所能显示的颜色和分辨率,显卡可分为MDA、CGA、EGA、VGA等多种。
显卡又由显示控制器和显示存储器(显存,又称显示缓冲区,与系统RAM统一编址)组成。
显示控制器可通过系统对其进行编程,设定相应的工作方式,这样我们通过数据传送指令往显示缓冲区内传送数据,相应的内容就会立即显示在屏幕上。
显示方式分为文本方式和图形方式。
文本显示方式是将显示器的屏幕划分为行和列的二维系统,在行列组成的网格位置上显示字符。
规定行和列的起始点为屏幕的左上角。
以80(列)×25(行)为例,即一行显示80个字符,共25行,左上角为座标(0,0),右下角座标为(24,79)。
在这种显示方式中,通常显示缓冲区的每两个单元对应屏幕上的一个字符,一个字节存放字符的ASCII码,紧接着的一个字节存放该字符的显示属性(如加亮、闪烁或反底显示等),共需显示缓冲区为80×25×2=4000Byte,文本显示方式占用内存少,显示速度快,但只能显示字符。
图形显示方式下,显示的单位是屏幕上的图象点(像素)。
屏幕按分辨率分成像素行和列。
例如800×600的显示分辨率,说明一行可显示800个像素点,共600行。
显示的每个像素有其显示属性(灰度值或颜色)。
显示缓冲区对应存放着屏幕的每个像素点的灰度值或颜色。
灰度值表现为所显示像素的亮暗差别,颜色则在彩色显示器中表现为色彩。
灰度和色彩值越高,图像层次越清楚逼真。
像素越密,分辨率越高,图像越清晰。
以分辨率为800×600,颜色256种(需8位二进制数表示)的增强型VGA显卡为例,其显示缓冲区至少为800×600×1Byte。
1显示模式和字符属性
1.显示模式
在文本方式和图形方式下,显示系统还可以工作在不同的分辨率和颜色下。
可以通过系统BIOS10H中断的0号功能来设置。
具体见表1。
表1显示模式
模式号
分辨率
颜色数
显示方式
调用方式
00
40×25字符
单色
文本
AH=00
AL=模式号
执行INT10H
01
40×25字符
16色
文本
02
80×25字符
单色
文本
03
80×25字符
16色
文本
04
320×200像素
4色
图形
05
320×200像素
单色
图形
06
640×200像素
单色
图形
07
80×25字符
单色
文本
0D
320×200像素
16色
图形
0E
640×200像素
16色
图形
0F
640×350像素
单色
图形
10
640×350像素
16色
图形
11
640×480像素
单色
图形
12
640×480像素
16色
图形
13
320×200像素
256色
图形
2.字符的显示属性
文本显示模式下,字符显示属性确定了字符在屏幕上所显示出来的特点,如是否加亮?
前景和背景如何?
等等。
单色字符显示属性字节的各位功能,如图1所示。
属性可以有不同的组合,表2是一些单色显示的属性.
表2颜色属性与取值的对应关系
属性值
显示效果
属性值
显示效果
00000000
00000001
00000111
00001111
无显示
黑底白字,下划线
黑底白字,正常显示
黑底白字,高亮度
01110000
10000111
11110000
白底黑字,反相显示
黑底白字,闪烁显示
白底黑字,反相闪烁
彩色字符显示属性字节的各位功能,如图2所示。
属性字节的低四位代表该字符的前景色(IRGB),它们与颜色的对应关系见表3。
表3彩色文本方式颜色
颜色IRGB
颜色IRGB
颜色IRGB
颜色IRGB
黑0000
蓝0001
绿0010
青0011
灰1000
浅蓝1001
浅绿1010
浅青1011
红0100
洋红0101
棕0110
浅灰0111
淡红1100
淡洋红1101
黄1110
高亮白1111
2字符方式下的显示缓冲区
显示存储器是显卡的一部分,它与普通内存统一编址。
8086/8088系列微机在设计时根据不同的显卡将显示缓冲区放在不同的位置。
对CGA、EGA、VGA显卡,显存起始地址是B800:
0000H;对MDA,是B000:
0000H。
每个字符的ASCII码和属性码字节存放于连续的两个字节中。
在80×25的文本显示方式下,屏幕可有2000个字符位置,因每个字符需要两个字节来表示,共需显存4KB(实际只使用4000个字节)。
如果显存有16KB,则可保存4屏幕的字符数据,通常称为4页数据。
对CGA、EGA、VGA的80列方式,0页在显存中的起始地址是B800:
0000H,1页为B800:
1000H,2页是B800:
2000H,3页是B800:
3000H。
每个显示页的前2000个字(4000个字节)与屏幕上的位置一一对应,存放一个字符的ASCII值及属性值,对应关系如图8.3所示。
屏幕上某地字符位置在显存中的偏移地址可由下列公式算出:
Char_offset=Page_offset+((row×width)+column)×byte
在这个公式中,Page_offset是页偏移地址,width是每行可显示的字符数,在25×80的字符显示方式下,width=80,byte是表示一个字符所用的字节数,在字符显示
方式中,byte=2,row和column是相对于屏幕左上角位置(0,0)的行列坐标。
3BIOS显示中断
BIOS提供的INT10H显示中断,除了0号功能设置显示模式外(见表2),还有以下一些功能调用。
1.光标控制
对光标的控制仅在字符方式下有效(因为图形方式下无光标)。
(1)改变光标的大小
功能号:
AH=01H
入口参数:
CH=光标的开始行(0~4位)
CL=光标的结束行号(0~4位)
(2)设置光标位置
功能号:
AH=02H
入口参数:
BH=页号(在当前屏幕显示时,BH=0)
DH=行号(Y坐标)
DL=列号(X坐标)
(3)读光标位置
功能号:
AH=03H
入口参数:
BH=页号
出口参数:
CH=光标的当前行号
CL=光标的当前列号
DH=光标的起始线
DL=光标的结束线
例1将光标移至屏幕的中间位置显示字符。
分析:
通常光标的位置是随着每一次显示逐个向后移动的,为了在屏幕的指定位置显示字符,必须先将光标移至该位置。
若工作在显示方式02,03(80×25字符显示方式),(0,0)是左上角坐标,(79,24)是右下角坐标。
程序如下:
…
MOVAH,02H
MOVBH,0
MOVDH,12
MOVDL,40
INT10H
…
2.清屏和卷屏
清屏是屏幕显示内容清除。
卷屏是指屏幕显示内容滚动。
分上滚和下滚两种。
(1)上滚:
显示内容向上移动,底端插入空白行。
功能号:
AH=06H
入口参数:
AL=滚动行数(如AL=0,则指定屏幕上为空白)
BH=新插入行的字符属性
CH=滚动的左上角行号
CL=滚动的左上角列号
DH=滚动的右下角行号
DL=滚动的右下角列号
(2)下滚:
显示内容向下移动,顶端插入空白行。
功能号:
AH=07H
入口参数:
与上滚的入口参数相同
清屏操作可通过这两个操作进行。
当AL中的值为0时就是清屏。
例2清除全屏幕操作的子程序
CLRPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,06H;6号功能
MOVAL,00;指定屏幕内容为空白,即清屏
MOVBH,07H;用正常显示属性为指定窗口清屏
XORCX,CX;窗口的左上角坐标为(0,0)
MOVDX,184FH;窗口的右下角坐标为(24,79)
INT10H
MOVDX,0;设置光标于左上角
MOVAH,2
INT10H
POPDX
POPCX
POPBX
POPAX
RET
CLRENDP
3.在指定的页中显示字符/字符串
(1)选择当前显示页
功能号:
AH=05H
入口参数:
AL=当前显示页号
注:
对于不同的显示方式,可用页号范围不同。
(2)读当前显示方式
功能号:
AH=0FH
入口参数:
无
出口参数:
BH=页号
AH=字符列数
AL=显示方式
(3)在当前光标位置上写字符
功能号:
AH=09H
入口参数:
AL=字符的ASCII码值
BH=页号
BL=字符的属性
CX=写入的字符个数
注:
0A号功能与09号基本相同,仅不需设置字符的属性。
(4)在光标位置处显示字符串
功能号:
AH=13H
入口参数:
ES=字符串所在段的段地址
BP=字符串首字节的偏移地址
CX=字符串的字节长度
DX=显示字符串第一个光标位置(DH:
行号,DL:
列号)
BH=页号
AL=0时,字符串结构为:
字符,字符,……
显示完后,光标在字符串的第一个位置上。
AL=1时,字符串结构为:
字符,字符,……
显示完后,光标在字符串的最后一个字符的下一个位置上。
AL=2时,字符串结构为:
字符,属性,字符,属性,……
显示完后,光标在字符串的第一个位置上。
AL=3时,字符串结构为:
字符,属性,字符,属性,……显示完后,光标在字符串的最后一个字符的下一个位置上。
例3在屏幕上以蓝底红字显示字符串“HELLO”
程序如下:
…
STRINGDB‘HELLO’
NDB$-STRING
…
MOVAL,3;设置显示模式为80*25文本方式
MOVAH,0
INT10H
MOVAX,SEGSTRING;字符串段地址→ES
MOVES,AX
MOVBP,PFFSETSTRING;字符串首字符偏移地址→BP
MOVCX,N;N个字符
MOVDX,0;从(0,0)处开始显示
MOVBL,14H;显示字符属性为蓝底红字
MOVAL,0;字符串格式为:
字符,字符,……
MOVAH,13H;显示字符串
INT10H
…
4.图形操作
(1)设置彩色组或背景颜色
功能号:
AH=0BH
入口参数:
BH=0时,设置背景颜色;
BH=1时,设置彩色组,即为显示的像素点确定颜色组;
BL=背景颜色(0~15)见表4或彩色组(0~1)。
出口参数:
无
表4图形方式下背景颜色代码
数值
颜色
数值
颜色
数值
颜色
数值
颜色
00
黑色
04
红色
08
灰色
0C
浅红色
01
蓝色
05
绛色
09
浅蓝色
0D
浅绛色
02
绿色
06
褐色
0A
浅绿色
0E
黄色
03
表色
07
浅灰
0B
浅青色
0F
白色
(2)写一个像素
功能号:
AH=0CH
入口参数:
DX=行数(0~199或0~479)
CX=行数(0~319或0~639)
AL=彩色值(AL的D7为“1”,则采色值与当前点内容作“异或”运算)
出口参数:
无
(3)读一个像素
功能号:
AH=0DH
入口参数:
DX=行数(0~199或0~479)
CX=行数(0~319或0~639)
出口参数:
AL=彩色值
例8.12设置彩色图形方式,在屏幕中央显示一个带条纹的矩形。
背景颜色设置为黄色,矩形边框设置为红色,横条颜色为绿色。
程序如下:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,0
MOVAL,4;设置320×200,4色图形方式
INT10H
MOVAH,0BH
MOVBH,0
MOVBL,0EH;设置背景颜色为黄色
INT10H
MOVDX,50;行号送DX,列号送CX
MOVCX,80
MOVAL,2;选择颜色为红色
CALLLINE1;调用子程序LINE1,显示矩形左边框
MOVDX,50;修改行号、列号
MOVCX,240
CALLLINE1;调用子程序LINE1,显示矩形右边框
MOVDX,50;修改行号、列号
MOVCX,81
MOVAL,2;选择颜色为红色
CALLLINE2;调用子程序LINE2,显示矩形上边框
MOVDX,150;修改行号、列号
MOVCX,81
CALLLINE2;调用子程序LINE2,显示矩形下边框
MOVDX,60
LP3:
MOVCX,81;置矩形内横线初始位置
MOVAL,1;选择横条颜色为绿色
CALLLINE2;调用子程序LINE2,显示绿色横线
ADDDX,10
CMPDX,150
JBLP3;若行号小于150,转LP3继续显示横线
MOVAH,4CH;返回DOS
INT21H
LINE1PROCNEAR;画竖线子程序
LP1:
MOVAH,0CH;写点功能
INT10H
INCDX;下一点行号增1
CMPDX,150
JBELP1;若行号小于150,则转LP1继续显示
RET
LINE1ENDP
LINE2PROCNEAR;画横线子程序
LP2:
MOVAH,0CH;写点功能
INT10H
INCCX;下一点列号增1
CMPCX,240;若列号小于240,则转LP2继续显示
JBELP2
RET
LINE2ENDP
CODEENDS
ENDSTART
…
4动画程序
实现动画的过程一般为:
先将图形在起点显示,延时一段时间,再擦除图形,然后在新的位置显示原图形,再擦除图形,如此反复,形成图形的运动,即动画。
擦除图形,可以通过清除相应部分屏幕来实现,也可用空字符在原位置重写来实现。
例5在屏幕上显示一运动的汽车。
▓▓▓▓▓←浅红
■■■■■■■←红
○○←棕,闪烁
程序如下:
CODESEGMENT
ASSSUMECS:
CODE
START:
WRMACROCHA,ATR,NUM;定义一个宏WR
MOVAH,02H;设置光标位置号
INT10H;DH、DL为行号、列号
MOVAL,CHA;AL中为显示字符的ASCII码值
MOVCX,NUM;显示字符个数
MOVBL,ATR;显示字符的属性
MOVAH,09H;在当前光标位置写字符
INT10H
ENDM
MOVAX,0003H;屏幕显示方式设置为80×25字符方式
INT10H
S1:
MOVSI,0A00H;显示起始坐标为10行,0列
S2:
MOVDX,SI
WR0DBH,0CH,5;显示第一排
INCDH;指向下一排
WR0DBH,4,7;显示第二排
INCDH;指向下一排
INCDL;指向下一列
WR09H,8EH,1;显示第三排的第一个符号
ADDDL,4
WR09H,8EH,1;显示第三排的第二个符号
CALLDEALY;延时一段时间
MOVDX,SI;返回起始点
WR0,0,5;清除第一排
INCDH
WR0,0,7;清除第二排
INCDH
WR0,0,6;清除第三排
MOVAH,1;读键盘,判有无键按下?
INT16H
JZCONU;无键按下继续转下一列显示
MOVAH,4C;有键按下,返回DOS
INT21H
CONU:
INCSI
CMPSI,0A50H;是最后一列吗?
JBS3;不是,继续转下一列显示
JMPS1;是,从第一列开始重新显示
S3:
JMPS2
DELAYPROC
MOVCX,0000H;延时子程序
LOOP$
RET
DELAYENDP
CODEENDS
ENDSTART
5图形程序
BIOS中断调用中提供了一些读/写像素等功能,可以利用“INT10H”调用有关功能实现屏幕绘图。
例6在屏幕上根据光标控制键绘图,按Esc键,绘图结束。
分析:
在屏幕上绘图,可调用BIOS软中断INT10H的0CH号功能,其作用是在屏幕上写一个像素,即画一个点,再用键盘中断读光标键的键值,根据键值修改像素的行列值,得到所需的图形。
程序如下:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,00H;设置显示模式为VGA640×480
MOVAL,12H
INT10H
MOVCX,300;CX为横坐标
MOVDX,240;DX为纵坐标
WRITE:
MOVAL,0AH;设置点的颜色
MOVAH,0CH;写一个像素
INT10H
MOVAH,0;读键盘按键值
INT16H
CMPAL,1BH;是Esc键吗?
JZEXIT;是,退出
CMPAH,48H;是“↑”键吗?
JNZNUP;不是,转判断是其它光标键
DECDX;是“↑”键,纵坐标减1
JMPWRITE;转至画点
NUP:
CMPAH,50H;是“↓”键吗?
JNZNDOWN
INCDX
JMPWRITE
NDOWN:
CMPAH,4DH;是“→”键吗?
JNZNRIGHT
INCCX
JMPWRITE
NRIGHT:
CMPAH,4BH;是“←”键吗?
JNZNLEFT
DECCX
JMPWRITE
EXIT:
MOVAX,0003H;恢复屏幕为字符显示方式
INT10H
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
7乐曲程序:
我们知道,乐曲是按照一定的高低、长短和强弱关系组成的音调。
在一首乐曲中,每个音符的音高和音长与音频和节拍有关。
音符与音频的关系如表1所示。
表5音符与音频关系
音符
声音频率
音符
声音频率
1
262
5
392
2
294
6
440
3
330
7
494
4
349
1
523
而节拍是保持该声音频率的时间(音长)。
八分音符为半拍,四分音符为一拍,二分音符为两拍,全音符为四拍。
如果全音符的持续时间为1s,那么八分音符就为0.125s,四分音符为0.25s,二分音符为0.5s。
PB0GATE2OUT2
PB1扬声器
图1扬声器工作硬件示意图
放大器
8086/8088微机驱动扬声器发声的硬件电路如图1所示。
欲使微机的扬声器能演奏乐曲,从该图可知,必须给扬声器输入指定频率和持续一定时间的脉冲。
产生指定频率的脉冲除采用例7.1所示方法外,还可以采用另外一种方法:
利用8253可编程定时器的通道2输出不同频率的脉冲信号。
8253定时器通道2工作于计数方式,输入的计数脉冲其频率为1192576Hz,设置计数初值为1192576/声音频率,那么8253通道2输出的将是该声音频率的脉冲。
控制8255A的PB端口的位1,使其置“1”,且保持其持续时间与该音符的音长相等。
这样脉冲经放大后扬声器就能演奏乐曲了。
例88253定时计数器产生指定频率脉冲的子程序
FREQPROC
PUSHAX
PUSHDX
PUSHDI;子程序的入口参数,DI=声音频率
MOVAL,0B6H;8253的工作方式
OUT43H,AL
MOV