汇编语言中断程序实例

来源:本站
导读:目前正在解读《汇编语言中断程序实例》的相关信息,《汇编语言中断程序实例》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《汇编语言中断程序实例》的详细说明。
简介:汇编语言中断程序实例 安装一个新的int 7ch中断例程,为显示输出提供如下的功能子程序。 (1)清屏。 (2)设置前景色。 (3)设置背景色。 (4)向上滚动一行 (一)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行......

汇编语言中断程序实例

安装一个新的int 7ch中断例程,为显示输出提供如下的功能子程序。

(1)清屏。

(2)设置前景色。

(3)设置背景色。

(4)向上滚动一行

(一)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行;

(二)对于2、3号功能,用al传递颜色值,(al)∈{0,1,2,3,4,5,6,7}。

代码如下:

;功能:安装一个新的int7ch中断例程,实现一个子程序 setScreen ,提供如下功能:

; (1)清屏。

; (2)设置前景色。

; (3)设置背景色。

; (4)向上滚动一行

; 入口参数说明:

; (1)每个子程序用 ah 寄存器传递功能号:

; (2)对于2、3号功能,用al传送颜色值,

assume cs:code,ds:data

data segment

err db ' ~~~~~ ah args is error! ~~~~~','$'

init dw 10 dup(0)

data ends

code segment

start:

mov ax,data

mov ds,ax

mov ax,0

mov es,ax

mov ax,es:[7ch*4]

mov init[0],ax

mov ax,es:[7ch*4+2]

mov init[1],ax

mov es:[7ch*4],offset setScreen

mov es:[7ch*4+2],cs

mov ax,102h

int 7ch

;call breakPoint

mov ax,201h

int 7ch

;call breakPoint

mov ax,300h

int 7ch

;call breakPoint

mov ax,0h

int 7ch

mov ax,400h

int 7ch

mov ax,0

mov es,ax

mov ax,data

mov ds,ax

mov ax,init[0]

mov es:[7ch*4],ax

mov ax,init[1]

mov es:[7ch*4+2],ax

ok: mov ax,4c00h

int 21h

setScreen:

jmp short setmain

list dw sub0,sub1,sub2,sub3

setmain:

cmp ah,3

ja subErr

mov bl,ah

mov bh,0

shl bx,1

call word ptr list[bx]

iret

sub0: ;清屏

mov cx,0b800h

mov es,cx

mov cx,2000

mov bx,0

sub0s:

mov byte ptr es:[bx],' '

add bx,2

loop sub0s

ret

sub1: ;设置前景色。

mov cx,0b800h

mov es,cx

mov cx,2000

mov bx,1

sub1s:

and byte ptr es:[bx],11111000b

or es:[bx],al

add bx,2

loop sub1s

ret

sub2: ;设置背景色。

mov cx,0b800h

mov es,cx

mov cx,2000

mov bx,1

shl al,1

shl al,1

shl al,1

shl al,1

sub2s:

and byte ptr es:[bx],10001111b

or es:[bx],al

add bx,2

loop sub2s

ret

sub3: ;向上滚动一行

mov cx,0b800h

mov es,cx

mov ds,cx

mov di,0

mov si,160

cli

mov cx,24

sub3s:

push cx

mov cx,160

rep movsb

pop cx

loop sub3s

mov cx,160

mov bx,0

sub3s1:

mov byte ptr es:3840[bx],' '

add bx,2

loop sub3s1

ret

subErr: ;显示错误信息

mov ax,data

mov ds,ax

mov ah,9

mov dx,offset err

int 21h

jmp ok

breakPoint: ;设置断点,用于调试

pushf

pop bx

or bh,3

push bx

popf

ret

code ends

end start

提醒:《汇编语言中断程序实例》最后刷新时间 2024-03-14 00:55:35,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《汇编语言中断程序实例》该内容的真实性请自行鉴别。