. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  如何使程序运行时自动全屏  [待解决] 回复[ 6次 ]   点击[ 683次 ]  
cnhnyu
[帖 主]   [ 发表时间:2007-11-19 09:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-22 14:47
我们现在调试运行汇编程序,大都是在windows下的dos提示符下进行的,默认的dos窗口不是全屏的,只有按下alt+enter组合键的时候才变成全屏模式,我现在想写的程序在启动的时候,能够自动控制dos进入全屏模式,我曾经试过,向键盘缓冲区送入enter,并把键盘状态字的alt位置为1, 可是却不能使dos窗口全屏,不知道哪位兄弟能给点提示?
fishboy
[第1楼]   [ 回复时间:2007-11-19 13:50 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
调用bios中断int 10H的显示功能,进行显示设置即可。设置显示方式需要设置的有ah和al,其中ah=0,表示是设置显示方式的功能,而al有多种参数来控制显示的具体模式,如下:
al=04H:320*200彩色图形方式
al=05H:320*200黑白图形方式
al=06H:640*200黑白图形方式
al=0DH:320*200彩色图形方式(EGA)
al=0EH:640*200彩色图形方式(EGA)
al=0FH:640*350黑白图形方式(EGA)
al=10H:640*350彩色图形方式(EGA)
al=11H:640*480黑白图形方式(VGA)
al=12H:640*480彩色图形方式(VGA)
al=13H:320*200,256色图形方式(VGA)
cnhnyu
[第2楼]   [ 回复时间:2007-11-19 14:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-22 14:47
这个我试过,我写的程序中本来就有设置显示模式的,可是没用
cat442
[第3楼]   [ 回复时间:2007-11-19 15:42 ]   [引用]   [回复]   [ top ] 
荣誉值:16
信誉值:6
注册日期:2007-06-26 16:56
我觉得既然楼主在windows下面的dos运行程序,你的程序使用的资源是windows管理的 ,屏幕显示方式是windows设置的,
你程序中设置的显示模式只影响windows虚拟出来的dos窗口的屏幕,而决定不了dos窗口是不是全屏。

此外,楼主的alt+enter的做法也是不行的了,你在你的程序里即使接收了ALT+ENTER 但是你的响应在虚拟dos系统中,而这个虚拟dos的窗口受谁控制?还是windows,所以这种思路也是行不通的。

如果想让dos窗口全屏,那最简单的设置方法:在cmd.exe窗口 右键-> 选择"属性" 选项-> "全屏显示" 应用 确定, 后有两个选项
     属性仅对当前窗口生效
     保存属性,供以后具有相同标题的窗口使用
对应你的需要,选择了。

用程序解决,怕是要和windows “斗一斗”了  ^_^!
cnhnyu
[第4楼]   [ 回复时间:2007-11-21 16:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-22 14:47
; setmode.asm
code segment
        assume cs:code, ds:code
        org 100h
main proc far
        jmp short start
msg        db 'Welcome to masm world.', 0dh, 0ah, 24h
        start:
                mov si, 82h
                mov al, [si]
                sub al, 30h
                xor ah, ah
                int 10h

                mov ah, 0fh
                int 10h
                xor ah, ah
                int 10h

                mov ax, code
                mov ds, ax
                mov dx, offset msg
                mov ah, 09h
                int 21h
                mov ax, 4c00h
                int 21h        
code ends
        end main

这个程序可以设置从0-9共10种显示模式
当从字符模式切换到图形模式的时候,自动全屏
cnhnyu
[第5楼]   [ 回复时间:2007-11-21 16:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-22 14:47
该程序可以带一个参数,运行方式如下:
setmode.exe 0   
设置显示模式为0
setmode.exe 4
设置显示模式为4,这个是图形模式,可以自动切换到全屏幕
syzu
[第6楼]   [ 回复时间:2008-04-09 19:57 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2008-03-22 13:14
这个涉及到win32编程吧,用高级语言很容易实现,先调用API,获得窗口句柄,然后获得窗口名,用API参数改变它的大小至全屏.我用VB以前做过,不过是是做cmd窗口.是游戏窗口.不过刚学汇编,用汇编不会
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved