X86 节目中的特殊字符
这是我第一次来这里 如果我对编程有疑问,我的朋友会告诉我这个论坛 这是我的节目。我的问题是,还有一些特殊的字符被打印出来 我将如何删除这个X86 节目中的特殊字符,x86,tasm,X86,Tasm,这是我第一次来这里 如果我对编程有疑问,我的朋友会告诉我这个论坛 这是我的节目。我的问题是,还有一些特殊的字符被打印出来 我将如何删除这个 .model small .stack .data var db "Welcome to Assembly Language$" .code clear proc near mov ah, 6 mov bh, 2h mov cx, 0 mov dx, 184fh int 10h ret clear end
.model small
.stack
.data
var db "Welcome to Assembly Language$"
.code
clear proc near
mov ah, 6
mov bh, 2h
mov cx, 0
mov dx, 184fh
int 10h
ret
clear endp
cursor proc near
mov ah, 2
mov bh, 0
mov dh, 10
mov dl, 14
int 10h
ret
cursor endp
start:
body proc near
call clear
call cursor
mov ah, 9
mov dx, offset var
int 21h
mov ah, 4ch
int 21h
body endp
end start
如何删除特殊字符
谢谢您遇到了一个段问题:当您使用
.data
指令时,数据被放在通过DS
寄存器访问的段中,而.code
指令将汇编代码放在通过CS
寄存器访问的段中
对于小内存模型,所有数据、代码和堆栈内存都合并到一个段中,但程序员有责任自己初始化段寄存器
您会看到奇怪的字符,因为数据是由int 21h
中断通过DS:DX
访问的,但是DS
指向错误的段号,您会在数据之前看到垃圾。您只需要修复DS
,以避免垃圾输出
在正文的开头添加以下内容:
mov ax, @data
mov ds, ax
我们需要使用AX
作为中间值,因为我们不能mov-DS:@data
这会有所帮助