利用emu8086学习汇编int 10h功能

汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序。使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用。

1 显示字符串小程序

先运行一个int 10h显示字符串的程序;

DATA SEGMENT
	OUT1 DB 'ABCDE'
	COUNT = $ - OUT1
DATA ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA,ES:DATA
START:
	MOV AX,DATA
	MOV ES,AX
	MOV DS,AX
	MOV AX,0600H	;清屏
	MOV BH,07H
	MOV CX,0
	MOV DX,184FH
	INT 10h
	MOV AX,0200H	;移动光标到0,0
	MOV BH,0
	MOV DX,0
	INT 10H
	MOV AX,1300H	;显示字符串
	MOV BX,0002H
	MOV CH,0
	MOV CL,COUNT
	MOV DX,0
	LEA BP,OUT1
	INT 10h
	MOV AX,4C00H
	INT 21H
CODE ENDS
	END START

 2 子功能01H


功能描述:设置 光标形状

入口参数:AH=01H

CH低四位=光标的起始行

CL低四位=光标的终止行

mov ch,0
mov cl,3
mov ah,01h
int 10h

运行如下;屏幕看不到什么;可能仿真屏幕不太支持光标; 

3 子功能 08H


功能描述:读光标处的字符及其属性

入口参数:AH=08H

BH=显示页码

出口参数:AH=属性

                 AL=字 符

mov ah,08h
mov bh,0
int 10h

运行如下;返回值在AX; AL是字符;现在光标处没有字符;AH=07不知道代表啥属性;

4 子功能0CH

功能描述:写图形象素

入口参 数:AH=0CH

AL=象素值

BH=页码

(CX、DX)=图形坐标列(X)、行(Y)

出口参数:无

 首先运行如下代码;提示:没有图形模式;需要先设置图形模式,才能写像素;

ah=00h是设置显示器模式;al = 0DH,  设置 320×200 16色; 

再运行如下代码;提示:仿真屏幕不支持 0Dh 的模式;提示使用13h 设置图形模式;

13H:640×480 256色;使用 al = 13h 设置;再运行;不出错,但是屏幕啥也没有; 

还需要用cx和dx设置图形模式下x和y坐标,再写像素点;

设置x和y坐标为(50, 50),再运行;如下;屏幕上比较靠左上角出来一个小点; 

mov ah,00h
mov al,13h
int 10h 

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

5 子功能02H


功能描述:用文本坐标下设置光标位置

入口参数:AH=02H

BH=显示页码

DH=行(Y坐标)

DL= 列(X坐标)

出口参数:无

把第一个程序设置光标位置的代码改为如下;

MOV AX,0200H    ;移动光标到0,0
MOV BH,0
MOV DX,33
INT 10H

把 MOV DX,0 改为 MOV DX,33;DX值变了,输出字符串位置应该改变;再运行;显示和第一个程序一样;不知道哪儿不对;下回再整;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值