`
lobin
  • 浏览: 427363 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

10H中断

 

显示模式

在DOS模式下,也就是实模式,包括虚拟8086模式下,默认的现实模式为:03H:80×25 16色 文本,这是一种VGA文本模式。

 

文本模式

文本显示模式。

 

图形模式

图形显示模式

 

VGA显示模式

00H:40×25 16色 文本, 01H:40×25 16色 文本 

02H:80×25 16色 文本, 03H:80×25 16色 文本 

04H:320×200 4色, 05H:320×200 4色 

06H:640×200 2色, 07H:80×25 2色 文本 

08H:160×200 16色,09H:320×200 16色 

0AH:640×200 4色, 0BH:保留  

0CH:保留,        0DH:320×200 16色 

0EH:640×200 16色,0FH:640×350 2(单色) 

10H:640×350 4色, 10H:640×350 16色 

11H:640×480 2色, 12H:640×480 16色 

13H:640×480 256色 

 

SVGA显示模式

100H:640×400   256色, 101H:640×480 256色 

102H:800×600    16色, 103H:800×600 256色 

104H:1024×768   16色, 105H:1024×768 256色 

106H:1280×1024  16色, 107H:1280×1024 256色 

108H:80×60  文本模式, 109H:132×25 文本模式 

10AH:132×43 文本模式, 10BH:132×50 文本模式 

10CH:132×60 文本模式 

 

关于显示模式的选择

关于显示模式的选择,其实就是选择一种分辨率和支持使用多少种颜色。分辨率越高,显示的越清晰,支持的颜色越多,显示的越丰富。

 

如上面的13H:640×480 256色,03H:80×25 16色 文本,其分辨率分别是640×480和80×25,分别支持256种颜色和16种颜色。

 

对于文本模式,如上面的03H:80×25 16色 文本模式,分辨率80×25指的是80列25行,这里是一页80列25行,也就是每行能显示80个字符。

 

对于图形模式,13H:640×480 256色图形模式,分辨率640×480指的是640列480行,这里是每行640个像素,每列480个像素。

 

00H功能号:设置显示模式

org     0x100

[section .text]
	mov ah, 00h ; 设置显示模式
	mov al, 01h ; 显示模式: 00H 40×25 16色 文本; 01H 40×25 16色 文本
	int 10h

	mov bx, 0b800h
	mov es, bx

	mov di, 78

	mov al, 'A'
	mov ah, 11010010B ;
	mov [es:di], ax

	add di, 2

	mov al, 'A'
	mov ah, 11010010B ;
	mov [es:di], ax


	mov di, 80 + 78

	mov al, 'B'
	mov ah, 11010010B ;
	mov [es:di], ax

	add di, 2

	mov al, 'B'
	mov ah, 11010010B ;
	mov [es:di], ax


	mov di, 80 * 2 + 78

	mov al, 'C'
	mov ah, 00000010B ;
	mov [es:di], ax

	add di, 2

	mov al, 'C'
	mov ah, 00000010B ;
	mov [es:di], ax



	mov ah, 4ch
	int 21h

00H功能号:设置图形显示模式

org 0x7c00

start:
	; 通过BIOS设置VGA模式 
	mov ah, 00h 
	
	;mov al, 11h 
	;mov al, 12h 
	mov al, 13h 
	int 10h 


last:
	hlt
	jmp last
	
	; MBR扇区位于整个硬盘的第一个扇区.
	; 硬盘扇区为512字节,所以主引导程序大小仅能也只能512字节。
	times 510-($-$$) db 0x00
	; MBR结束标志
	db 0x55, 0xaa 


 

org     0x100

[section .text]
	; 通过BIOS设置VGA模式 
	mov ah, 00h 
	
	;mov al, 11h 
	;mov al, 12h 
	mov al, 13h 
	int 10h 

last:
	hlt
	jmp last

 

如果是在DOS下设置图形显示模式,我们通常会通过DOS系统调用中断的4CH功能号返回:

	mov ah, 4ch
	int 21h

但这样的话,屏幕会产生花屏,如下:

org     0x100

[section .text]
	; 通过BIOS设置VGA模式 
	mov ah, 00h 
	
	;mov al, 11h 
	;mov al, 12h 
	mov al, 13h 
	int 10h 

	mov ah, 4ch
	int 21h

 
 

 

06H功能号:初始化屏幕并清屏

org     0x100

[section .text]
	; 当前显示模式: 03H 80×25 16色 文本

	mov ah, 06h
	mov al, 00h; 滚动行数: 0: 清屏

	; 左上角位置(Y坐标,X坐标) 
	mov ch, 00h ; Y坐标, 从0开始
	mov cl, 00h ; X坐标, 从0开始

	mov bh, 11010010B

	; 右下角位置(Y坐标,X坐标)
	mov dh, 49 ; Y坐标
	mov dl, 79 ; X坐标
	int 10h


	mov ah, 4ch
	int 21h


06H功能号:初始化屏幕并清屏

指定窗口的左上角位置和窗口的右下角位置

org     0x100

[section .text]
	
	mov ah, 06h
	mov al, 00h; 滚动行数: 0: 清屏

	mov ch, 4
	mov cl, 1

	mov bh, 11010010B

	mov dh, 26
	mov dl, 40
	int 10h

	mov ah, 02h
	mov bh, 0
	mov dh, 2
	mov dl, 1
	int 10h

	mov ah, 4ch
	int 21h


0CH功能号:写图形象素


画点:图形模式下,在屏幕左上角画一个点

org     0x100

[section .text]
	mov ah, 00h
	mov al, 12h
	int 10h

	mov ah, 0ch
	mov al, 05h
	mov bh, 0
	mov cx, 0
	mov dx, 0
	int 10h

	;mov ah, 4ch
	;int 21h
last:
	hlt
	jmp last

画线:图形模式下,在屏幕顶部画一条线

org     0x100

[section .text]
	mov ah, 00h
	mov al, 12h
	int 10h

	mov ah, 0ch
	mov al, 05h
	mov bh, 0
	mov cx, 0
	mov dx, 0

	mov di, 640
_rep:
	int 10h

	inc cx
	dec di
	cmp di, 0
	jne _rep

	;mov ah, 4ch
	;int 21h
last:
	hlt
	jmp last

画线:图形模式下,在屏幕顶部画一条点线

org     0x100

[section .text]
	mov ah, 00h
	mov al, 12h
	int 10h

	mov bl, 00h ; 黑色,用于交换颜色

	mov ah, 0ch
	mov al, 05h
	mov bh, 0
	mov cx, 0
	mov dx, 0

	mov di, 640
_rep:
	int 10h

	xchg al, bl ; 交换颜色: 交换al,bl的值

	inc cx
	dec di
	cmp di, 0
	jne _rep

	;mov ah, 4ch
	;int 21h
last:
	hlt
	jmp last

画线:图形模式下,在屏幕顶部画一条点线(和上面的效果不一样)

org     0x100

[section .text]
	mov ah, 00h
	mov al, 12h
	int 10h

	mov di, 80

	mov bh, 0
	mov cx, -1
	mov dx, 0

	mov ah, 0ch
_rep:
	mov al, 05h
	inc cx
	int 10h

	mov al, 00h
	inc cx
	int 10h

	mov al, 05h
	inc cx
	int 10h

	mov al, 05h
	inc cx
	int 10h

	mov al, 00h
	inc cx
	int 10h

	mov al, 05h
	inc cx
	int 10h

	mov al, 00h
	inc cx
	int 10h

	mov al, 05h
	inc cx
	int 10h


	dec di
	cmp di, 0
	jne _rep

	;mov ah, 4ch
	;int 21h
last:
	hlt
	jmp last

 

0FH功能号:读取显示模式

segment data
	m_vga_mode db 'vga mode: ', '$'
	vga_mode times 10 db 0
		db '$'
	m_vga_col db 'column number: ', '$'
	vga_col times 10 db 0
		db '$'
	m_vga_page db 'page number: ', '$'
	vga_page times 10 db 0
		db '$'
	CRLF    db 0dh, 0ah, '$'

segment proc


segment code 
; proc ascii
ascii:
	mov	si,   10
next:	xor	dx,   dx
	div	si
	add	dx,   '0'
	dec	bx
	mov	[bx], dl
	or	ax,   ax
	jnz	next
	ret

..start:
	mov     ax,data 
        mov     ds,ax 

	mov ah, 0fh ; 读取显示模式
	int 10h

	
	push bx
	push ax

	xor ah, ah

	; proc ascii call requires registers ax and bx
	mov bx, vga_mode + 9
	call ascii

	mov dx, m_vga_mode
	mov ah, 09h
	int 21h

	mov dx, vga_mode
	mov ah, 09h
	int 21h
	
	mov dx, CRLF
	mov ah, 09h
	int 21h


	pop ax
	mov al, ah
	xor ah, ah

	mov bx, vga_col + 9
	call ascii

	mov dx, m_vga_col
	mov ah, 09h
	int 21h

	mov dx, vga_col
	mov ah, 09h
	int 21h

	mov dx, CRLF
	mov ah, 09h
	int 21h


	pop bx
	mov al, bh
	xor ah, ah

	mov bx, vga_page + 9
	call ascii

	mov dx, m_vga_page
	mov ah, 09h
	int 21h

	mov dx, vga_page
	mov ah, 09h
	int 21h

	mov dx, CRLF
	mov ah, 09h
	int 21h


	mov ah, 4ch
	int 21h

 

 

分享到:
评论

相关推荐

    bios中断表 bios中断表

    在x86架构的计算机中,中断向量表(Interrupt Vector Table, IVT)包含了所有的中断和服务调用,包括BIOS中断。 总的来说,BIOS中断表是操作系统和底层硬件之间的桥梁,提供了对硬件设备的基本控制,而中断表则确保了...

    BIOS中断向量表.pdf

    ### BIOS中断向量表详解 #### 一、概述 BIOS(基本输入输出系统)作为计算机启动时最早运行的软件之一,在系统初始化过程中扮演着重要角色。BIOS中断向量表是一个重要的数据结构,用于存储操作系统可以调用的中断...

    超压缩大屏幕bios中断中断表

    在MS-DOS时代,程序员可以直接使用BIOS中断10h来设置图形模式,例如,设置800x600分辨率和16位颜色可能涉及到10h中断的某些功能子代码。 "说明.txt"可能是关于如何使用这些工具和代码的指南,解释了如何调参以实现...

    《x86汇编语言:从实模式到保护模式》第13章代码补丁

    而增加不同颜色的字符串输出功能,可能涉及对显存的直接操作,利用BIOS中断10h来设置颜色属性,或者在保护模式下使用VGA图形模式和颜色寄存器。 在汇编语言编程中,理解CPU的工作原理、内存布局以及中断系统是至关...

    bios-asm PC IBM

    7. **中断调用(INT)**:BIOS提供了一系列中断调用,如INT 10h用于视频服务,INT 13h用于磁盘操作等,这些调用供操作系统和其他软件使用。 8. **内存映射**:BIOS需要理解内存的布局,以便正确地将数据和程序加载...

    Bios和Dos中断详解

    BIOS中断是BIOS提供的一组服务,允许操作系统和其他软件通过特定的中断指令调用这些服务。在x86架构中,这些中断通常用两个数字表示,例如INT 10H用于显示服务,INT 13H用于磁盘操作。 DOS中断则是在DOS操作系统中...

    BIOS and Kernel Developer' s Guide(BKDG) For AMD Family 10h Processors (Sep 2007)

    AMD的 BKDG 指南详细解释了如何为Family 10h处理器优化内核,包括CPU的时钟速度控制、功耗管理、虚拟化支持(如AMD-V)以及硬件中断处理机制。 4. **处理器特性**:Family 10h处理器引入了许多先进的特性,如 Cool'...

    BIOS、DOS中断大全

    BIOS中断服务主要包含以下几个方面的功能: 1. 显示服务(INT 10H):涉及显示器的配置和控制,比如设置显示器模式、光标形状、光标位置以及读取光标信息等。 2. 直接磁盘服务(INT 13H):提供访问磁盘存储设备的...

    汇编-响铃

    2. 调用INT 10H中断:将AH寄存器设置为6,这表示我们要控制扬声器。 3. 播放音调:中断执行后,扬声器会根据AL寄存器的值开始发声。 4. 停止响铃:如果需要停止响铃,可以再次调用中断,但这次将AL设置为0,表示关闭...

    bios.rar_Windows编程_Windows_Unix_

    3. BIOS中断服务:详细解释BIOS提供的中断调用,如INT 10H用于视频服务,INT 13H用于磁盘操作。 4. BIOS与操作系统交互:BIOS如何将控制权传递给操作系统,以及在多引导系统中如何选择加载哪个操作系统。 5. BIOS...

    masm.rar_masm

    要实现从键盘接收输入并在屏幕上显示字符串,我们需要使用BIOS中断,例如INT 16H用于键盘输入,INT 10H用于屏幕显示。 以下是关于使用MASM和BIOS进行键盘输入及屏幕显示的知识点: 1. **MASM语法**: MASM支持...

    汇编实验12汇编实验12答案

    在DOS环境中,可以使用BIOS中断10H来控制屏幕输出,比如设置光标位置、写入字符。要将文本居中显示,我们需要计算屏幕宽度,然后调整光标位置。 在打印完错误消息后,我们应清理任何可能的错误状态,如清除标志...

    汇编语言编的时钟程序

    总结起来,这个“汇编语言编的时钟程序”项目展示了如何利用汇编语言的底层特性,结合DOS功能和BIOS中断,来创建一个实时显示系统时间的简单应用。这样的程序对于理解计算机硬件和操作系统的工作原理,以及提高编程...

    【课程设计】X86汇编语言编写的贪吃蛇游戏源码.zip

    例如,BIOS的视频服务(INT 10H)可以用来设置字符和颜色,从而在文本模式下绘制游戏画面。 5. **内存管理**:游戏的状态,如蛇的位置、长度、食物位置等,都需要在内存中存储。汇编语言可以直接操作内存,因此...

    masm.zip_数字信号

    2. **屏幕输出**:使用汇编语言控制字符界面的显示,可能涉及到BIOS中断调用,如INT 10H,用于设置视频模式、移动光标和打印字符。 3. **时间管理**:获取和更新系统时间,可能通过INT 1Ah BIOS中断来访问系统的...

    实验楼-操作系统的引导-代码.zip_ZFU_操作系统实验二 内核代码修改

    2. **BIOS中断**:如INT 10H用于视频服务,INT 16H用于键盘输入,INT 15H的E820H用于内存检测。 3. **内存管理**:理解物理内存和逻辑地址的区别,以及早期内存分区的概念,如实模式和保护模式的转换。 4. **磁盘I/O...

    常用简单汇编程序整理-适合汇编初学者

    - **屏幕输出**: BIOS提供的INT 10H中断可用于显示字符或图形。 6. **调试与优化** - **调试技巧**: 如使用DEBUG工具或集成开发环境的调试功能。 - **代码优化**: 理解指令执行开销,减少不必要的计算和内存访问...

    显示系统时间,闹铃,倒计时 汇编课设

    这可能涉及使用BIOS中断(如INT 10h)来控制文本模式的显示,或者在图形模式下直接操作显存。 2. **设置闹钟**:闹钟功能可能需要程序能够设置一个预定的时间点,然后在到达这个时间点时执行某个动作,例如触发闹铃...

    汇编实验表格显示字符

    - 然后,使用MOVC指令或INT 10H中断将字符送入屏幕缓冲区。 - 使用循环控制结构,按行按列遍历字符数组,依次显示每个字符。 - 最后,可能需要调用其他BIOS中断服务,如清屏或回车换行。 通过这个实验,学生不仅...

    xiaoche.rar_masm

    4. **INT 10h/21h** 调用:INT 10h 通常是BIOS中断,用于视频输出和屏幕控制;INT 21h 是DOS中断,处理输入输出和文件操作。 5. **CX/AX** 寄存器:CX通常用于计数,AX用于一般计算或存储数据,如小车的位置信息。 ...

Global site tag (gtag.js) - Google Analytics