这是我第一次来这里。
如果我对编程有疑问,我的朋友告诉我这个论坛。
所以这是我的计划。我的问题是也印有特殊字符。
我该如何删除?
.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
如何删除特殊字符?
由于
答案 0 :(得分:0)
您有一个段问题:当您使用.data
指令时,数据被放置在通过DS
寄存器访问的段中,而.code
指令将汇编的代码放入通过CS
寄存器访问的段。
对于小内存模型,所有数据,代码和堆栈内存都合并为一个段,但程序员有责任自己初始化段寄存器。
您会看到奇怪的字符,因为int 21h
中断通过DS:DX
访问数据,但DS
指向您在数据前看到垃圾的错误段号。您只需要修复DS
以避免垃圾输出。
在body
proc:
mov ax, @data
mov ds, ax
我们需要使用AX
作为中间值,因为我们无法mov DS:@data
这16 bit asm reference可以提供帮助。