TASM打印string的字符

我试图按字符打印一个string,迭代通过它。 这是我得到的:

.MODEL SMALL .STACK 64 .DATA string DB 'Something',0 len equ $-string .CODE xor bx, bx mov si, offset string Char: mov al, byte[si + bx] inc bx cmp bx, len je Fin mov ah, 2 mov dl, al int 21h jmp Char Fin: mov ax, 4c00h int 21h END 

我不知道我是否得到正确的stringmem参考,因为它只显示我怪异的符号。 我试着给dl加30,以为是ascii表示。

我怎样才能打印char字符?

Solutions Collecting From Web of "TASM打印string的字符"

这是Tasm的一个工作示例,不会改变字符串的开始。

由于增量的移动以及用jnz替换了je ,所以jnz了一个jnz

 .MODEL SMALL .STACK 64 .DATA string DB 'Something' len equ $-string .CODE Entry: mov ax, @data ;make DS point to our DATA segment mov ds, ax xor bx, bx ;bx <-- 0 mov si, offset string ;address of string to print mov ah, 2 ;we will use repeatedly service #2 of int 21h Char: mov dl, [si + bx] ;dl is the char to print int 21h ;ask DOS to output a single char inc bx ;point to next char cmp bx, len jnz Char ;loop if string not finished mov ax, 4c00h int 21h ;DOS exit program with al = exit code END Entry