TASM 打印字符串的字符
TASM Print characters of 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
我不知道我是否获得了正确的字符串内存引用,因为它只显示奇怪的符号。我尝试将 30 添加到 dl,认为这是因为 ascii 表示。
如何逐个打印一个字符?
这是一个使用 Tasm 的工作示例,它没有破坏字符串的开头。
由于增量的移动和用 jnz
替换 je
它少了一次跳跃
.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
我试图逐个字符地打印一个字符串,遍历它。这就是我得到的:
.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
我不知道我是否获得了正确的字符串内存引用,因为它只显示奇怪的符号。我尝试将 30 添加到 dl,认为这是因为 ascii 表示。
如何逐个打印一个字符?
这是一个使用 Tasm 的工作示例,它没有破坏字符串的开头。
由于增量的移动和用 jnz
je
它少了一次跳跃
.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