匯編語言程序設(shè)計(jì)之根據(jù)輸入改變屏幕顏色的代碼
寫在前面
該程序?qū)崿F(xiàn)了“根據(jù)輸入改變屏幕顏色”。其實(shí)這個(gè)程序本身沒什么意思,純粹只是將學(xué)習(xí)到的知識(shí)融合在了一起而已。程序本身過于繁瑣了,寫得并不是很好。以及這是我匯編實(shí)驗(yàn)課程的作業(yè),如果大家有類似作業(yè)的話希望不要過度借鑒,本程序僅供參考和學(xué)習(xí)。
1.設(shè)計(jì)目的
1)體驗(yàn)并了解DOS界面下色彩顯示;
2)了解并掌握INT10功能BIOS調(diào)用顯示屏幕控制。
2.程序功能
①創(chuàng)建小屏;
②提示輸入姓名;
③詢問背景顏色并修改背景色;
④詢問字體顏色并修改字體色;
⑤詢問是否閃爍并修改閃爍;
⑥輸出姓名及問候語。
3.源代碼
stack segment stack db 64 dup (?) stack ends data segment buff db 50,?,50 dup(?) nam0 db 'What is your name ?$' bkc0 db 'What is your background color ?$' bkc1 db '->(input RGB:0-7):$' fc0 db 'What is your font color ?$' fc1 db '->(input RGB:0-7):$' tw0 db 'Do you like twinkle ?$' tw1 db '->(like:1 dislike:0): $' hel0 db 'Hello!$' hel1 db 'Welcome to MASM!$' arro db '->$' data ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax ;使ds指向data數(shù)據(jù)段 mov ah,6 ;初始化屏幕 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h mov bh,00001111b ;黑底白字 call scroll call cursor mov dx,offset nam0 mov ah,9 int 21h ;輸出字符串,提示輸入姓名 mov bh,10001111b call scroll call cursor mov dx,offset buff mov ah,10 int 21h ;輸入字符串至緩沖區(qū) call scroll mov bh,00001111b ;閃爍黑底白字 call scroll call cursor mov dx,offset bkc0 mov ah,9 int 21h ;輸出字符串,詢問背景色 call scroll call cursor mov dx,offset bkc1 mov ah,9 int 21h ;輸出字符串,提示輸入格式 mov bh,10001111b call scroll call cursor mov dx,offset arro mov ah,9 int 21h ;輸出箭頭 mov ah,1 int 21h ;輸入背景色 sub al,30h call scroll mov cl,4 shl al,cl mov bh,00001000b add bh,al ;將bh的4-6位改為輸入的背景色 call scroll call cursor mov dx,offset fc0 mov ah,9 int 21h ;輸出字符串,詢問字體色 call scroll call cursor mov dx,offset fc1 mov ah,9 int 21h ;輸出字符串,提示輸入格式 or bh,10000000b call scroll call cursor mov dx,offset arro mov ah,9 int 21h ;輸出箭頭 mov ah,1 int 21h ;輸入字體色 sub al,30h call scroll add bh,al ;將bh的0-2位改為輸入的字體色 and bh,01111111b call scroll call cursor mov dx,offset tw0 mov ah,9 int 21h ;輸出字符串,詢問是否閃爍 call scroll call cursor mov dx,offset tw1 mov ah,9 int 21h ;輸出字符串,提示輸入格式 or bh,10000000b call scroll call cursor mov dx,offset arro mov ah,9 int 21h ;輸出箭頭 mov ah,1 int 21h ;輸入閃爍 sub al,30h call scroll cmp al,1 je twin and bh,01111111b ;若閃爍,將bh的7位改為1 jmp a twin: or bh,10000000b ;若不閃爍,將bh的7位改為0 a: call scroll call cursormid mov dx,offset hel0 mov ah,9 int 21h ;輸出問候 push bx call scroll call cursormid mov bl,buff+1 ;將輸入的字符數(shù)存至bl add bl,2 ;將bl加2,使之指向最后一個(gè)字符的下一個(gè)字符 mov bh,0 ;將bh置零 add bx,offset buff ;將buff的偏移地址加到bx中 mov byte ptr [bx],'!' ;在字符串最后寫入'!' add bx,1 ;將bx加1,使之指向下一個(gè)字符 mov byte ptr [bx],'$' ;在字符串最后寫入'$' mov dx,offset buff+2 mov ah,9 int 21h ;輸出字符串(即所存姓名、'!') pop bx call scroll call cursormid mov dx,offset hel1 mov ah,9 int 21h ;輸出字符串,問候 mov ah,4ch int 21h ;結(jié)束程序 scroll proc near push ax push bx push cx push dx mov ah,6 mov al,1 mov ch,8 mov cl,30 mov dh,16 mov dl,60 int 10h ;下滾一行 pop dx pop cx pop bx pop ax ret scroll endp cursor proc near push ax push bx push dx mov ah,2 mov dh,16 mov dl,30 ;移動(dòng)光標(biāo) mov bh,0 int 10h pop dx pop bx pop ax ret cursor endp cursormid proc near push ax push bx push dx mov ah,2 mov dh,16 mov dl,38 ;移動(dòng)光標(biāo) mov bh,0 int 10h pop dx pop bx pop ax ret cursormid endp code ends end start
4.流程圖
總結(jié)
到此這篇關(guān)于匯編語言中的根據(jù)輸入改變屏幕顏色的代碼的文章就介紹到這了,更多相關(guān)匯編語言改變屏幕顏色內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
匯編語言系列之匯編實(shí)現(xiàn)簡單數(shù)學(xué)運(yùn)算
這篇文章主要介紹了匯編語言系列之匯編實(shí)現(xiàn)簡單數(shù)學(xué)運(yùn)算的思路詳解,本文給大家列出了兩種算術(shù)運(yùn)算的代碼,設(shè)計(jì)思路給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11