汇编语言(三十四)之输出中文
生活随笔
收集整理的這篇文章主要介紹了
汇编语言(三十四)之输出中文
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輸出中文
程序運行:
代碼:
daones segmentfull_name db 0,1,2,3,4,5 full_name_length dw $-full_name start_char db 0 change_char_count dw 6color db 1 x dw 40 y dw 10 direction dw 2 sceen_start_width dw 0 sceen_width dw 80 sceen_start_height dw 0 sceen_height dw 25;------以下為孫悟空 16X16 字模點陣數據 db字母開頭補充0----------- buffer db 00H,7EH,02H,04H,08H,0AH,0CH,39H ;孫db 0C9H,0AH,0CH,08H,08H,08H,28H,10Hdb 20H,20H,20H,20H,20H,0B0H,0A8H,24Hdb 26H,22H,20H,20H,20H,20H,0A0H,40Hdb 10H,13H,10H,10H,59H,54H,51H,91H ;悟db 17H,10H,11H,11H,11H,11H,11H,11Hdb 08H,0FCH,80H,88H,0FCH,88H,08H,08Hdb 0FEH,08H,0FCH,08H,08H,08H,0F8H,08Hdb 02H,01H,7FH,40H,84H,0CH,10H,20H ;空db 00H,3FH,01H,01H,01H,01H,0FFH,00Hdb 00H,00H,0FEH,02H,44H,30H,18H,08Hdb 00H,0F8H,00H,00H,00H,04H,0FEH,00Hdaones ends codes segmentassume cs:codes, ds:daones main proc farpush ds mov ax,0 push ax mov ax,daonesmov ds, axmov es, axmov ax,12hint 10H ;置圖形模式mov ax, 3int 10H ;置文本模式;-----從顯示字庫start_char處替換為“雷正宇”字模-----lea bp, buffer ;取字模首址mov dl, start_char ;從顯示字庫start_char處替換mov dh, 0mov cx, change_char_count ;換change_char_count個字mov bx, 1000hmov ax, 1100h ;裝入用戶字體int 10hcall dealret main endp deal proc near mov ax,0b800hmov es,ax next:call print_namemov ah,1int 16h ;有按鍵按下嗎?jz no_check_key call press_keycmp cx,1234h jz exitno_check_key:call sleepmov dx,xadd dx,direction ;移一個位置mov x,dxcmp dx,sceen_start_width ;已到最左邊了嗎?jz change_direction mov ax,sceen_widthsub ax,full_name_lengthcmp dx,ax ;已到最右邊了嗎?jz change_directionjmp undochange_direction:neg direction undo:jmp next ;在新位置重新顯示exit:ret deal endpprint_name proc near uses ax cx si di cld ;正序顯示mov ax,y ;找到字符串所在顯存的地址mul sceen_widthadd ax,xadd ax,axmov di,ax mov ah,color ;設置前景色cmp ah,7jz resetinc ahjmp continuereset: mov ah,1 continue:mov color,ahlea si,full_name ;指向串首mov cx,full_name_length ;full_name_length個字符call clear_screen ;清屏show:lodsb ;取一字stosw ;存入顯存loop show ;顯示下一字ret print_name endp press_key proc near uses ax bx mov cx,0 mov ah,0int 16h ;取其鍵值cmp al,0dh ;是回車嗎?jnz has_keymov cx,1234hjmp exithas_key: cmp ah,80jnz no_VK_DOWNmov bx,sceen_heightdec bxcmp y,bxjae no_VK_DOWNinc yjmp exitno_VK_DOWN: cmp ah,72jnz exitmov bx,sceen_start_heightcmp y,bx jz exitdec yexit:ret press_key endp clear_screen proc near uses ax bx cx dx mov ah,6 ;清屏mov al,0 mov bh,7 mov ch,0 mov cl,0 mov dh,24 mov dl,79 int 10h ret clear_screen endp sleep proc uses ax cx dx mov cx,10delay:mov dx,3dahone:in al,dxtest al,8jnz onetwo:in al,dxtest al,8jz twoloop delayret sleep endpcodes endsend main?
左邊框里面豎著讀一個字節長度數據作為存儲子模,讀兩列。由于漢字是由兩個字母位置組成的
注:16點陣字庫的字模提取軟件
總結
以上是生活随笔為你收集整理的汇编语言(三十四)之输出中文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音小程序在哪里添加 抖音小程序添加方法
- 下一篇: 浪迹天涯从此并肩看彩霞是什么歌 你是风儿