程序上的特殊字符

时间:2014-03-10 13:07:33

标签: 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 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

如何删除特殊字符?

由于

1 个答案:

答案 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可以提供帮助。