dosbox环境下运行汇编语言不能显示中文,可以使用dosbox-x显示中文,dosbox-x支持显示gb2312编码的中文。学校第一个汇编语言程序是显示学号姓名,姓名是中文,只能使用拼音代替,但是使用dosbox-x就可以实现显示中文名。
开发环境使用vscode,下载一个插件就可以用dosbox-x了
下载MASM/TASM插件,选择DOS环境模拟器为dosbox-x
源代码
.486
DATA SEGMENT USE16
MESG1 DB 'B23051217'
;MESG2 DB 'liumou','$'
MESG2 DB '刘','某','$' ;Constant too large
;MESG2 DW 0F5C1H,0B3C4H,'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:
MOV AX,DATA
MOV DS,AX
MOV AH, 9
MOV DX, OFFSET MESG1
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END BEG
dosbox-x支持gb2312编码,一般都是utf-8,要先通过编码保存为gb2312,否则会乱码
定义的语句为MESG2 DB '刘','某','$',使用的是DB,如果用DW会报错Constant too large,DD会乱码,中文字符在不同编码下大小不同,gb2312编码的中文字符是两个字节,
例如汉字‘刘’的GB2312编码是C1F5H,那在内存中放C1F5H就可以正确显示汉字,如果放的不是这个,就会乱码
运行效果如下
调试看一下内存里放的什么
可以看到内存里放的B23051217的ASCII码紧跟着后面就是C1F5也就是‘刘’的gb2312编码,C4B3是‘某’的编码,24H是‘$’字符串结束