此代码用于输入姓名年龄和城市。它可以打印出年龄等信息,但市政当局无法打印出该值。
.MODEL SMALL
ORG 100h
.DATA
outmsg db 'Hello User $'
inputmsg db 0Dh, 0Ah, 'Name: $'
inputmsg2 db 0Dh, 0Ah, 'Age: $'
inputmsg3 db 0Dh, 0Ah, 'Municipality: $'
outputMsg db 0dh, 0Ah, 'Hello, my name is $'
outputMsg2 db ', i am $'
outputMsg3 db 0dh, 0Ah, 'Years Old. I live in $'
buffer db 10, ?, 10 dup(' ') ;Buffer to hold input string
buffer2 db 10, ?, 10 dup(' ')
buff db 10, ?, 10 dup(' ')
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
;display hello world
mov ah, 09h
lea dx, outmsg
int 21h
mov ah, 09h
lea dx, inputMsg
int 21h
mov dx, offset buffer
mov ah, 0ah
int 21h
mov ah, 09h
lea dx, inputMsg2
int 21h
mov dx, offset buffer2
mov ah, 0ah
int 21h
mov ah, 09h
lea dx, inputMsg3
int 21h
mov dx, offset buff
mov ah, 0ah
int 21h
mov ah, 09h
lea dx, outputMsg
int 21h
mov bl,buffer[1]
mov buffer[bx + 2], '$'
mov dx, offset buffer + 2
mov ah, 9
int 21h
mov ah, 09h
lea dx, outputMsg2
int 21h
mov bl,buffer2[1]
mov buffer2[bx + 2], '$'
mov dx, offset buffer2 + 2
mov ah, 9
int 21h
ret
mov ah, 09h
lea dx, outputMsg3
int 21h
mov bl,buff[1]
mov buffer3[bx + 2], '$'
mov dx, offset buff + 2
mov ah, 9
int 21h
ret
MAIN ENDP
END MAIN
我想打印出三个输入。
.MODEL SMALL ORG 100h
在定义
.MODEL SMALL
的程序中,不应使用 ORG 100h
指令。该特定指令适合 TINY 内存模型。mov ax, 4C00h
int 21h
。不要仅使用 ret
,这又只适合 TINY 模型(前提是堆栈没有混乱)。
您看不到显示的市政府,因为在该代码运行之前程序终止了。中间的
ret
指令。
mov bl,buff[1]
mov buffer3[bx + 2], '$'
您不应该依赖 BH 寄存器来保存零!即使在 emu8086 中,这可能是程序启动时的情况,但这通常是不正确的!
正如@Nassau 已经告诉你的,buffer3 是错误的。这应该是 buff 并且 emu8086 应该抱怨未定义的标签。那么它抱怨了吗?