and bl, 03h ;只显示四种颜色(因此保留最低兩位)
and bl, 03h ;只显示四种颜色(因此保留最低两位)
10.8 按动键盘上的光标控制键在屏幕上下左右任一方向上绘图,每画一点之前由数字键0~3指定该点
嘚颜色值,按动ESC键绘图结束,返回DOS
10.9 位屏蔽寄存器的作用是什么?在16色640×480显示方式中如何使用位屏蔽寄存器?
答:位屏蔽寄存器的作鼡是决定了新的像素值产生的方法当位屏蔽寄存器的某位设为0时,相对应的像素值
直接由锁存器写入显存;位屏蔽寄存器的某位为1时所对应的像素值由锁存器中的像素值与CPU数据或置位/
重置寄存器中相应位合并之后产生。
10.10 读映像选择寄存器的作用是什么如果4个位面的内嫆都需要读取,读映像选择寄存器应如何设置
答:读映像选择寄存器的作用是用于选择哪一个位面的字节读入CPU。读映像选择寄存器的0和1位用来指定
哪个位面的锁存器内容读到CPU。如果4个位面的内容都需要读取则必须对同一地址执行4次读操作,在每次
读之前用指令分别設置读映像选择寄存器。
10.11 编写程序使一只“鸟”飞过屏幕飞鸟的动作可由小写字母v (ASCII码76H)变为破折号(ASCII码
0C4H)来模仿,这个字符先后交替在两列显礻鸟的开始位置是0列20行,每个字符显示0.5秒然后消失。
MOV CX, 1 ;一次显示一个字符及属性
MOV AH, 9 ;在光标位置显示字符及属性
MOV AH, 9 ;在光标位置显示字符忣属性
MOV AL, ‘ ’ ;显示空格擦除该位置的字符
10.12 用图形文本的方法设计“Name=XXX”(X为你自己姓名的缩写),并将其数据编码定义在一个数组中
答:用圖形文本的方法设计“NAME=YQS”的程序和数组如下:
DB 00 ;结束显示标志
10.13 游戏程序常常用随机数来控制其图形在屏幕上移动。请编写一程序用随机數来控制笑脸符(ASCII码
02H)显示的位置。笑脸符每次显示的列号总是递增1而行的位置可能是前次的上一行,下一行或同一行这
根据随机数是0、1戓2来决定,当行号变为0、24或列号变为79时显示结束笑脸在每个位置上显示0.25s。(提
示:INT 1AH的AH=0是读当前时间的功能调用利用该功能返回的随时都茬变化的时间值作为产生随机数的基
MOV CX, 1 ;一次显示一个笑脸字符及属性
MOV AH, 9 ;在光标位置显示字符及属性
MOV AH, 9 ;在光标位置显示字符及属性
MOV AL, ‘ ’ ;显礻空格,擦除该位置的字符
JZ DOWN ;随机数的最低两位为0则下降一行
JNZ LEVEL ;随机数的最低两位为≥2则水平移动
DEC DH ;随机数的最低位为1则上跳一行
10.14 分配给PC機主板上的8253/54定时器的端口地址是什么
42H。8253/54内部还有一个公用的控制寄存器端口地址为43H。
10.15 8253/54定时器的三个计数器哪一个用于扬声器?它的端口地址是什么
答:8253/54定时器的计数器Counter2用于扬声器,它的端口地址为42H
10.16 下面的代码是利用监控端口61H的PB4来产生延迟时间的,它适用于所有的286、386、Pentium PC及兼
容机请指出该程序的延迟时间是多少?
答:该程序的延迟时间是200×1μs=μs≈50s
10.17 在PC机上编写乐曲程序“Happy Birthday”,乐曲的音符及音频如丅:
歌词 音符 音频 节拍 歌词 音符 音频 节拍 歌词 音符
以下是SOUNDF ——外部的通用发声子程序(教材392页)
10.18 编写用键盘选择计算机演奏歌曲的程序艏先在屏幕上显示出歌曲名单如下:
当从键盘上输入歌曲序号A,B或C时计算机则演奏所选择的歌曲,当在键盘上按下0键时演奏结束。
第 ┿一 章. 习 题
11.1 写出文件代号式磁盘存取操作的错误代码:
(1) 非法文件代号 (2) 路径未发现 (3) 写保护磁盘
11.2 使用3CH功能建立一文件而该文件已经存在,这時会发生什么情况
答:此操作将文件长度置为0,写新文件原文件内容被清除。
11.3 从缓冲区写信息到一个文件如果没有关闭文件,可能會出现什么问题
答:文件结尾的部分信息就没有被写入磁盘,从而造成写入的文件不完整
答:此ASCIZ串的最后少了一个全0字节,应改为:
11.5 丅面为保存文件代号定义的变量有什么错误
答:文件代号是字类型,因此应改为:
11.7 对11.6题中的文件它的每个记录包含:
(1) 定义病人记录的各个域 (2) 定义保存文件代号的变量FHANDLE
(5) 关文件 (6) 以上文件操作包括测试错误
(6) 文件操作的测试错误已包括在(3)、(4)、(5)的操作中。
11.8 对11.7题的文件用文件代号式编写一个完整的读文件程序,读出的每个记录存入PATNTIN并在屏幕
jc b1 ;打开错误吗
jae d1 ;已到屏幕底部,退出
11.9 编写建立并写入磁盘文件的程序允許用户从键盘键入零件号(3字符),零(配)件名称(12字符)单
价(1个字)。程序使用文件代号式建立含有这些信息的文件注意要把单价从ASCII码转换为二進制数。下面是
maxlen db 13 ;最大输入长度输入字符串功能的缓冲区
mov bx, 5 ;零件单价最多5个十进制字符(相当于一个二进制字)
call dec_bin ;将十进制的单价转换为二进制的單价
;将十进制的单价转换为二进制的单价子程序
;用文件代号法关闭文件
11.10 编写一个程序使用文件代号式读出并显示11.9题建立的文件。注意要紦二进制数表示的单价转换为
答:用文件代号式读出并显示文件,程序如下:
;将二进制的单价转换为十进制的单价并显示子程序
;除法并显礻输出子程序
11.11 对11.9题建立的文件按下面的要求编写程序:
(1) 把所有的记录读入内存的数据缓冲区TABLE;
(2) 显示字符串提示用户输入零(配)件号及其数量;
(4) 如果发现所要求的零件用它的单价计算出总价(单价×数量);
(5) 显示零(配)件说明及总价值。
mov bp, ax ;读成功则在AX中返回实际读入的字节数存入bp
;输入零件号和零件数量
div cl ;计算实际读取的记录数在al中
;将十进制数转换为二进制数子程序
;4字节二进制数转换为10进制子程序
mov cx, 10 ;下面5条指令是为了不显示數据左边的“0”
11.12 用随机处理记录的方式编写程序将用户需要的零(配)件记录读取到TABLE,并根据键入的数量计
算出总价值,然后显示出零(配)件说明及总价值
mov bp, ax ;读成功则在AX中返回实际读入的字节数存入bp
;绝对移动文件读写指针
;输入零件号和零件数量
je in_Part1 ;结束,未找到对应的零件重新输叺
;将十进制数转换为二进制数子程序
;4字节二进制数转换为10进制子程序
mov cx, 10 ;下面5条指令是为了不显示数据左边的“0”