[英]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.