实验八 窗口图形程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言
实验八 窗口图形程序设计
实验要求
了解屏幕窗口程序编写方法 掌握用INT 10H的00H、02H、07H、0AH等 主要功能设置窗口属性和显示窗口文本图形 的方法 了解使用汇编语言进行图形输出的方法
实验内容-1 实验内容
题目: 题目:
用“笑脸”符 (ASCII码为02)在屏幕 规定大小窗口中画一条斜线。
实验内容-1 实验内容
屏幕初始化用06h(07h)号BIOS功能调用 编 程 提 示
mov ah,06h int 10h 调用参数:(al)= ,(bh)= ,(cx)= (P478页) P478 格式:
显示字符用0ah号BIOS功能调用
格式: mov ah,0ah int 10h 调用参数:(al)=字符的ASCII码,(bh)=显示 页,(cx)=重复次数(P478页)
实验步骤
根据题目要求,参考程序框图及编程提 示,编写汇编源代码。 上机编辑源程序,并汇编、连接、调试 运行,查看结果。 写出实验报告。
实验内容-3 实验内容
;接收输入字符,并判断是否是ESC、←、或→键,然后转到相应的入口处理。 接收输入字符,并判断是否是ESC、 ESC 然后转到相应的入口处理。 get_char macro local next1,next2,next3,exit mov ah,0 int 16h ;return:ah=scanning code,al=ascii code ;01h为ESC键的扫描码 cmp ah,01h ;01h为ESC键的扫描码 jz next1 ;4bh为 cmp ah,4bh ;4bh为←键的扫描码 jz next2 ;4dh为 cmp ah,4dh ;4dh为→键的扫描码 jz next3 jmp exit next3: jmp g_rwin next2: jmp g_lwin next1: jmpBiblioteka Baidug_exit ;all return to dos system exit: endm
实验内容-3 实验内容
;数据段,存放各窗口当前光标位置 数据段, data segment 存放当前为左右窗口的变量,右窗口为1,左窗口为0 1,左窗口为 static db ? ;存放当前为左右窗口的变量,右窗口为1,左窗口为0 左窗口行号, lx db 15 ;左窗口行号,初始值为左下行号 左窗口列号, ly db 10 ;左窗口列号,初始值为左下列号 右窗口行号, rx db 15 ;右窗口行号,初始值为左下行号 右窗口列号, ry db 50 ;右窗口列号,初始值为左下列号 下窗口行号, dwx db 22 ;下窗口行号,初始值为左下行号 下窗口列号, dwy db 15 ;下窗口列号,初始值为左下列号 data ends
实验内容-1 实验内容
“笑脸”符的ASCII码是:02H
编 程 提 示
设置显示方式用0号BIOS功能调用
格式:mov ah,0 int 10h 调用参数:由al内容决定显示方式(P477页)
置光标位置用2号BIOS功能调用
格式:mov ah,2 int 10h 调用参数(bh)=页号,(dh/dl)=行/列(P477页)
实验内容-3 实验内容
实验内容-3 实验内容
;接收输入字符,并判断是否是ESC、←、或→键,然后转到相应的入口处理。 接收输入字符,并判断是否是ESC、 ESC 然后转到相应的入口处理。 get_char macro local next1,next2,next3,exit mov ah,0 int 16h ;return:ah=scanning code,al=ascii code ;01h为 ESC”键的扫描码 cmp ah,01h ;01h为”ESC”键的扫描码 jz next1 ;4bh为 cmp ah,4bh ;4bh为”←”键的扫描码 jz next2 ;4dh为 cmp ah,4dh ;4dh为”→”键的扫描码 jz next3 jmp exit next3: jmp g_rwin next2: jmp g_lwin next1: jmp g_exit ;all return to dos system exit: endm
实验内容-1 实验内容
l:
主 程 序 部 分 代 码
exit:
mov cx,500h ;延时 延时 push cx mov cx,0 loop $ pop cx loop l inc dh ;下一个光标位置 下一个光标位置 inc dl cmp dh,25 ;到尾行? 到尾行? 到尾行 jne lop ;否,继续 否 mov ah,0bh ;有键按下 有键按下? 有键按下 int 21h cmp al,0ffh jz exit ;是,退出 是 退出 jmp ab ;否,重新开始画下一条斜线 否 重新开始画下一条斜线 ……
实验内容-3 实验内容
;在屏幕上显示字符 follows入口在al中为显示字符的ascii码值 入口在al中为显示字符的ascii display macro ;cursor follows入口在al中为显示字符的ascii码值 push bx mov bx,0 mov ah,0eh int 10h pop bx endm ;光标定位 pos_cursor macro row,column mov ah,02h ;0页 mov bh,0 ;0页 mov dh,row ;行号 mov dl,column ;列号 int 10h endm
实验内容-3 实验内容
;清屏 clear 此功能类似scroll宏up_scroll_lines参数等于0 此功能类似scroll宏up_scroll_lines参数等于0的情况 scroll 参数等于 macro attr,lu_row,lu_column,rd_row,rd_column mov ah,06h mov al,0 mov ch,lu_row mov cl,lu_column mov dh,rd_row mov dl,rd_column mov bh,attr int 10h endm
实验内容-3 实验内容
;接收输入字符,并判断是否是ESC、←、或→键,然后转到相应的入口处理。 接收输入字符,并判断是否是ESC、 ESC 然后转到相应的入口处理。 get_char macro local next1,next2,next3,exit mov ah,0 int 16h ;return:ah=scanning code,al=ascii code ;01h为ESC键的扫描码 cmp ah,01h ;01h为ESC键的扫描码 jz next1 ;4bh为 cmp ah,4bh ;4bh为←键的扫描码 jz next2 ;4dh为 cmp ah,4dh ;4dh为→键的扫描码 jz next3 jmp exit next3: jmp g_rwin next2: jmp g_lwin next1: jmp g_exit ;all return to dos system exit: endm
实验内容-2 实验内容
流 程 图
开始 设置显示方式及光标类型 初始化光标位置
置光标
显示v 显示v,延时 光标列加1 光标列加1,置光标 显示- 延时,列加1 显示-,延时,列加1
有键按下? 有键按下
Y
返回dos 返回dos
Y N
N
到尾列? 到尾列
实验内容-3(选作) 实验内容
屏幕窗口显示程序:在屏幕上开出三个窗口, 屏幕窗口显示程序:在屏幕上开出三个窗口,它们的行 列坐标如图3.2所示。光标首先定位在右窗口最下面一 所示。 列坐标如图 所示 行的行首( , ),如从键盘输入字符, ),如从键盘输入字符 行的行首(15,50),如从键盘输入字符,则显示在 右窗口,同时也显示在下窗口的最下面的一行。 右窗口,同时也显示在下窗口的最下面的一行。若需要 将字符显示在左窗口,则先按下← 将字符显示在左窗口,则先按下←键,接着再从键盘输 入字符,字符就会从左窗口的最下行开始显示, 入字符,字符就会从左窗口的最下行开始显示,同时下 窗口也显示出左窗口的内容。如若再按下→ 窗口也显示出左窗口的内容。如若再按下→键,输入的 字符就会接着先前的字符之后显示出来。 字符就会接着先前的字符之后显示出来。当一行字符显 示满后(左右窗口一行显示20个字符 个字符, 示满后(左右窗口一行显示 个字符,下窗口一行显示 50个字符),窗口自动向上卷动一行,输入的字符继续 个字符),窗口自动向上卷动一行, 个字符),窗口自动向上卷动一行 于最低一行,窗口最高一行向上卷动后消失。 于最低一行,窗口最高一行向上卷动后消失。整个程序 键退出。 以ESC键退出。 键退出
实验内容-1 实验内容
开始 设置显示方式 屏幕初始化, 屏幕初始化,清屏 dl/dh初值为0 dl/dh初值为0 初值为 置光标 显示
流 程 图
使光标指向下 一行下一列
dl dh
N Y N Y
d
实验内容-1 实验内容 start:
ab:
主 程 序 部 分 代 码
lop:
mov al,2 ;设置显示方式 设置显示方式,80X25黑白文本 设置显示方式 黑白文本 mov ah,0 int 10H mov al,0 ;屏幕初始化 屏幕初始化 mov bh,07 mov cx,00 mov dh,25 mov dl,25 mov ah,6 int 10h mov dh,0 mov dl,0 mov bh,0 ;置光标位置 置光标位置 mov ah,2 int 10h mov bh,0 ;显示字符 显示字符 mov al,02 mov cx,1 mov ah,0ah int 10h
左、右窗口流程 下窗口流程
实验内容-3 实验内容
;向上卷屏或清屏、开窗口宏定义 向上卷屏或清屏、 向上卷屏或清屏
scroll macro mov mov mov mov mov mov mov int endm up_scroll_lines,attr,lu_row,lu_column,rd_row,rd_column ah,06h al,up_scroll_lines bh,attr ch,lu_row cl,lu_column dh,rd_row dl,rd_column 10h ;上卷行数或清屏 ;卷入行属性 ;左上行号 ;左上列号 ;右下行号 ;右下列号
实验内容-2 实验内容
题目:使一只“ 题目 使一只“鸟”飞过屏幕。小鸟的动作可由“v”变为 使一只 飞过屏幕。小鸟的动作可由“ 变为 号来模仿, “-”号来模仿,这个字符先后交替在两列显示。鸟的开 号来模仿 这个字符先后交替在两列显示。 始位置是0列 行 每个字符显示约0.5秒(可用循环指 始位置是 列20行,每个字符显示约 秒 令来模拟),然后消失。 ),然后消失 令来模拟),然后消失。
相关文档
最新文档