我正在尝试逐个字符地打印字符串,迭代它。这就是我所拥有的:
.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
我不知道我是否得到了正确的字符串mem引用,因为它只显示了奇怪的符号。我尝试将d添加30,认为这是因为ascii表示。
如何通过char打印char?
答案 0 :(得分:2)
这是Tasm的一个工作示例,它不会破坏字符串的开头。
由于稍后移动增量并将je
替换为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