打印变量不起作用
Print variable does not work
你好,这段代码应该有一个名字和一个数字,并打印名字作为我给它的次数。
然而,当我查看内存时,一切看起来都是正确的,而且我看到了名字,
但是当我用 ah = 09h 来做 int21 时,它根本不打印名字
(它应该在 print
标签中打印名称。)
org 100h
FirstTime db ' Please type any number: $'
Error db 13,10,'Please type any VALID NUMBER: $'
MyName db 16 dup('$')
mov dx, offset MyName
mov ah, 0Ah
int 21h
mov dx, offset FirstTime
enter:
;Start message/error
mov ah, 09h
int 21h
;Get input -
mov ah,01h
int 21h
mov bl,al
;Validation check -
cmp bl, 30h
jae above
;false - return + error msg
mov dx, offset Error
jmp enter
;true
above:
cmp bl,39h
jbe printname
;false - return + error msg
mov dx, offset Error
jmp enter
;print name(true) -
printname:
;dose it 0?
cmp bl, 30h
je finito
;Print name! woho its (not) working!
print:
mov dx, offset MyName
mov ah, 09h
int 21h
dec bl
cmp bl, 30h
jne print
finito:
hlt
mov dx, offset MyName
add dx, 2
mov ah, 09h
int 21h
试一试
问题始于输入缓冲区的错误定义。第一个字节必须是您希望输入的字节数。第二个字节将是有效输入的 bytes/characters 的数量。
MyName db 14,0,16 dup('$') ;At least 1 "$" will remain.
mov dx, offset MyName
mov ah, 0Ah
int 21h
这也意味着您必须相应地更改 PRINT。
print:
mov dx, 2 + offset MyName
mov ah, 09h
int 21h
ps。这个程序有 运行 吗?你不应该跳过那些数据线吗?
你好,这段代码应该有一个名字和一个数字,并打印名字作为我给它的次数。
然而,当我查看内存时,一切看起来都是正确的,而且我看到了名字,
但是当我用 ah = 09h 来做 int21 时,它根本不打印名字
(它应该在 print
标签中打印名称。)
org 100h
FirstTime db ' Please type any number: $'
Error db 13,10,'Please type any VALID NUMBER: $'
MyName db 16 dup('$')
mov dx, offset MyName
mov ah, 0Ah
int 21h
mov dx, offset FirstTime
enter:
;Start message/error
mov ah, 09h
int 21h
;Get input -
mov ah,01h
int 21h
mov bl,al
;Validation check -
cmp bl, 30h
jae above
;false - return + error msg
mov dx, offset Error
jmp enter
;true
above:
cmp bl,39h
jbe printname
;false - return + error msg
mov dx, offset Error
jmp enter
;print name(true) -
printname:
;dose it 0?
cmp bl, 30h
je finito
;Print name! woho its (not) working!
print:
mov dx, offset MyName
mov ah, 09h
int 21h
dec bl
cmp bl, 30h
jne print
finito:
hlt
mov dx, offset MyName
add dx, 2
mov ah, 09h
int 21h
试一试
问题始于输入缓冲区的错误定义。第一个字节必须是您希望输入的字节数。第二个字节将是有效输入的 bytes/characters 的数量。
MyName db 14,0,16 dup('$') ;At least 1 "$" will remain.
mov dx, offset MyName
mov ah, 0Ah
int 21h
这也意味着您必须相应地更改 PRINT。
print:
mov dx, 2 + offset MyName
mov ah, 09h
int 21h
ps。这个程序有 运行 吗?你不应该跳过那些数据线吗?