[英]Calculating different between numbers in array(Assembly, Irvine)
我正在嘗試計算數字之間的差距。 為此,我使用了 2 個數組。 所以除了輸出和數字后面出現的奇怪符號外,一切正常。
此時數組中的第一個數字,元素之間的第 2 個不同,第 3-2 個已經移動到第二個數組。 輸出:1 2 2 /3 44/722/9one/
2
這個符號從哪里來? 是什么原因造成的? 注冊錯誤? 為什么在第一個循環中 'gap'(array) 有正確的數字,但是當我稍后通過這個數組時它只有 2 和有線符號?
INCLUDE Irvine32.inc
.data
array byte 1,3,7,9
gap byte ?
blank byte ' '
ph byte "Done",0
.code
main PROC
mov eax,0
mov ecx,lengthof array
mov esi, offset array
mov edi,offset gap
arr:
mov al,[esi]
call writedec; here
.if ecx==1
mov edx,offset ph
call writestring
.else
mov al,blank
call writechar
mov al,[esi+1]
sub al,[esi]
call writedec; here
mov [edi],al
;check block
mov al,blank
call writechar
mov al,[edi] ; here
call writedec
mov al,blank
call writechar
inc esi
inc edi
.endif
mov al,'/'
call writechar
loop arr
call crlf
mov eax,0
mov ecx,lengthof gap
mov esi,offset gap
go:
mov al,[esi]
call writedec
mov al,blank
call writechar
inc esi
loop go
exit
main ENDP
myexit proc
call waitmsg
ret
myexit endp
end main
謝謝!
知道了! 變量間隙初始化錯誤。
這是正確的初始化gap byte lengthof array-1 dup(?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.