8086彙編顯示中文

2021-08-17 07:02:24 字數 2469 閱讀 5197

具體請參考

github專案

先給個效果圖

給出模板程式如下,有詳細注釋

datas segment

;字模資料,可用字模生成程式生成,替換掉此處即可,此處使用的是16*16的黑體字模,32byte/字

tw db 000h,00ch,04fh,08ch,06fh,0ach,028h,0ach,00ah,0ach,04ah,0ach,06ah,0ach,02ah,0ach

db 00ah,0ach,02ah,0ach,022h,02ch,026h,08ch,064h,0cch,04ch,05ch,048h,018h,000h,000h

db 000h,068h,060h,06ch,030h,064h,037h,0feh,007h,0feh,0f0h,060h,0f7h,0e0h,037h,0e0h

db 033h,030h,033h,030h,033h,030h,03bh,0d6h,03fh,0deh,036h,00eh,000h,004h,000h,000h

db 002h,000h,003h,000h,001h,080h,0ffh,0feh,0ffh,0feh,018h,060h,018h,060h,00ch,060h

db 00ch,0c0h,006h,0c0h,003h,080h,007h,0c0h,01eh,0f0h,078h,03eh,060h,00ch,000h,000h

db 003h,000h,001h,080h,07fh,0feh,07fh,0feh,060h,006h,01fh,0f0h,01fh,0f0h,000h,0c0h

db 001h,080h,07fh,0feh,07fh,0feh,001h,080h,001h,080h,007h,080h,007h,000h,000h,000h

datas ends

stacks segment

dw 10 dup(?)

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks

start:

mov ax,datas

mov ds,ax ;設定資料段暫存器

mov ax,stacks

mov ss,ax ;設定棧段暫存器

mov sp,20

;設定棧頂偏移位址

mov ah,0fh

int 10h ;讀當前顯示方式至ax中

push ax ;當前顯示方式入棧

mov ax,12h

int 10h ;設定顯示方式為vga彩色

mov di,0

;di控制顯示位置,640*480解析度,可顯示80*60位元組,第i行漢字寫入時di為80*16*i~80*16*i+78,相鄰漢字di差2

call display ;呼叫顯示過程

mov ah,01

int 21h ;等待輸入,暫停作用

pop ax ;ax出棧

mov ah,00h

int 10h ;恢復原來顯示方式

mov ax,4c00h ;退出程式

int 21h

;movsw指令將ds:si中資料按字傳送至es:di

display:

;輸出 『測試文字』--------------------

mov ax,0a000h ;vga寫入起始段位址

mov es,ax ;設定傳送目標段位址

cld ;cld指令使df=0,正向傳輸字

mov cx,4

;連續的字數,此處「測試文字」共4字

lea si,tw ;需寫入漢字字模的首位址

dis1:

push cx ;多重迴圈,cx入棧

push si

push di

mov cx,16

disword1:

movsw

add di,78

;轉到下一行字模寫入位置,乙個漢字16*16,故需寫16行

loop disword1

pop di

pop si

pop cx

add si,32

;讀取下乙個漢字的字模資料,由於乙個漢字占用32byte,故加上32

add di,2

loop dis1

ret;-----------------------------

codes ends

end start

8086彙編手冊

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

8086CPU彙編 顯示字串

在第8行第5列以紅色字型顯示 welcome to masm assume ds data,cs code data segment db welcome to masm 0 data ends code segment start mov ax,data mov ds,ax mov si,0 在8...

8086彙編 文字模式下的彩色字元顯示

通過呼叫bios中斷可以設定視窗顯示方式。如 mov ah,00h 設定顯示方式 mov al,03h 80 25 16色文字顯示 int 10h 通過上述 就可以將視窗設定為80 25 16色文字顯示的視窗,當然文字顯示方式不止03h這一種。還有如下 al解析度 色彩03h 80 25 16色07...