利用emu8086学习汇编int 10h功能
匯編中的10H中斷是由BIOS對顯示器和屏幕所提供的服務(wù)程序。使用int 10h服務(wù)程序時,必須先指定ah寄存器為以下顯示服務(wù)編號之一,以指定需要調(diào)用的功用。
1 顯示字符串小程序
先運行一個int 10h顯示字符串的程序;
DATA SEGMENTOUT1 DB 'ABCDE'COUNT = $ - OUT1 DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA START:MOV AX,DATAMOV ES,AXMOV DS,AXMOV AX,0600H ;清屏MOV BH,07HMOV CX,0MOV DX,184FHINT 10hMOV AX,0200H ;移動光標(biāo)到0,0MOV BH,0MOV DX,0INT 10HMOV AX,1300H ;顯示字符串MOV BX,0002HMOV CH,0MOV CL,COUNTMOV DX,0LEA BP,OUT1INT 10hMOV AX,4C00HINT 21H CODE ENDSEND START?2 子功能01H
功能描述:設(shè)置 光標(biāo)形狀
入口參數(shù):AH=01H
CH低四位=光標(biāo)的起始行
CL低四位=光標(biāo)的終止行
mov ch,0 mov cl,3 mov ah,01h int 10h運行如下;屏幕看不到什么;可能仿真屏幕不太支持光標(biāo);?
3 子功能 08H
功能描述:讀光標(biāo)處的字符及其屬性
入口參數(shù):AH=08H
BH=顯示頁碼
出口參數(shù):AH=屬性
? ? ? ? ? ? ? ? ?AL=字 符
mov ah,08h mov bh,0 int 10h運行如下;返回值在AX; AL是字符;現(xiàn)在光標(biāo)處沒有字符;AH=07不知道代表啥屬性;
4 子功能0CH
功能描述:寫圖形象素
入口參 數(shù):AH=0CH
AL=象素值
BH=頁碼
(CX、DX)=圖形坐標(biāo)列(X)、行(Y)
出口參數(shù):無
?首先運行如下代碼;提示:沒有圖形模式;需要先設(shè)置圖形模式,才能寫像素;
ah=00h是設(shè)置顯示器模式;al = 0DH,? 設(shè)置 320×200 16色;?
再運行如下代碼;提示:仿真屏幕不支持 0Dh 的模式;提示使用13h 設(shè)置圖形模式;
13H:640×480 256色;使用 al = 13h 設(shè)置;再運行;不出錯,但是屏幕啥也沒有;?
還需要用cx和dx設(shè)置圖形模式下x和y坐標(biāo),再寫像素點;
設(shè)置x和y坐標(biāo)為(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 10h5 子功能02H
功能描述:用文本坐標(biāo)下設(shè)置光標(biāo)位置
入口參數(shù):AH=02H
BH=顯示頁碼
DH=行(Y坐標(biāo))
DL= 列(X坐標(biāo))
出口參數(shù):無
把第一個程序設(shè)置光標(biāo)位置的代碼改為如下;
MOV AX,0200H?? ?;移動光標(biāo)到0,0
MOV BH,0
MOV DX,33
INT 10H
把?MOV DX,0 改為?MOV DX,33;DX值變了,輸出字符串位置應(yīng)該改變;再運行;顯示和第一個程序一樣;不知道哪兒不對;下回再整;
總結(jié)
以上是生活随笔為你收集整理的利用emu8086学习汇编int 10h功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 9.0中的新增功能 - 译
- 下一篇: 在emu8086中学习几个汇编语言显示字