好友
阅读权限10
听众
最后登录1970-1-1
|
assume cs:code,ds:data
data segment
dw 'welcome to masm!' ;我想把这行的英文改成中文,也是16个字节,结果发现无法正常显示,然后我百度了一下如何让汇编识别中文,也没有说到这个上面的答案,然后我在想,是不是ASCII码默认的需要指定CPU来认识它?
db 02H,24H,71H
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0B800H ;设置显存段地址。 这一行我本来设置的是B800H,因为在我看来,B800H和0B800H是一样的,结果不行,所以我有点疑惑,为什么前面那个0不能省略?
mov es,ax ;设置显存段名称。
mov si,0 ;设置字符串偏移地址。
mov di,10H ;设置颜色属性偏移地址。
mov bx,0720H ;设置首行显示位置,11行乘以160加上(160减去32后再除以2)。
mov cx,10H ;设置循环次数,16个字符串。
s:mov al,[si] ;设置第一个字符串给al。
mov es:[bx],al ;设置al的字符串给首行显存地址。
mov es:160[bx],al ;设置al字符串给第二行显存地址。
mov es:320[bx],al ;设置al字符串给第三行显存地址。
mov al,[di] ;设置颜色属性给al。
mov es:[bx+1],al ;设置al的颜色属性给第一行字符串,以此类推。
mov al,[di+1] ;设置第二种颜色属性给al。
mov es:160[bx+1],al ;设置第二种颜色属性给第二行字符串,以此类推。
mov al,[di+2] ;设置第三种颜色属性给al。
mov es:320[bx+1],al ;设置第三种颜色属性给第三行字符串,以此类推。
add bx,2 ;设置每个字符串偏移地址。
add si,1
loop s
mov ax,4c00H
int 21H
code ends
end start |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|