ideal
model small
stack 1024
dataseg
array1 db 11 dup(?)
codeseg
org 100h
PROC MAIN
CALL GETINPUT
CALL PRINTARRAY
EXIT:
mov ah, 4ch
int 21h
ENDP
PROC PRINTARRAY
lea dx, [array1]
mov ah, 9
int 21h
ret
ENDP
PROC GETINPUT
mov bx, offset array1
GET:
CALL GETCHAR
cmp al, '.'
je ENDGET
mov [array1+bx], al
inc bx
cmp bx, 10
jge ENDGET
CALL PRINTSPACE
jmp GET
ENDGET:
mov [array1+bx], '$'
ret
ENDP
PROC GETCHAR
mov ah, 1
int 21h
ret
ENDP
PROC PRINTSPACE
mov dl, ' '
mov ah, 2
int 21h
ret
ENDP
PROC PRINTCHAR
mov ah, 2
int 21h
ret
ENDP
END MAIN
當添加'$'時,獲取NTVDM錯誤cs:0423 ip:0125。沒有哨兵,我不能打印沒有垃圾和其他字符的數組。 :( 我不知道它,因爲我的操作系統,Windows 7的32位,或彙編請幫我:(
你的循環似乎允許多達10個字符存儲在'array1'中(你的退出條件是'al =='。所以你最終可能會把'$'寫到'[array1 + 10]'(即第11個字節),因爲你已經聲明array1是一個10字節的數組,所以這是超出限制的。 – Michael 2013-03-06 14:38:15
你說得對。將其更改爲20.仍然是相同的錯誤。 – 2013-03-06 15:23:48