利用emu8086学习汇编int 10h功能
匯編中的10H中斷是由BIOS對顯示器和屏幕所提供的服務程序。使用int 10h服務程序時,必須先指定ah寄存器為以下顯示服務編號之一,以指定需要調用的功用。
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 ;移動光標到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
功能描述:設置 光標形狀
入口參數: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 10h5 子功能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值變了,輸出字符串位置應該改變;再運行;顯示和第一個程序一樣;不知道哪兒不對;下回再整;
總結
以上是生活随笔為你收集整理的利用emu8086学习汇编int 10h功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 9.0中的新增功能 - 译
- 下一篇: 在emu8086中学习几个汇编语言显示字