Assembly 计算数组中数字之间的差异(部件,Irvine)
我在计算这些数字之间的差距。为此,我使用了两个数组。因此,除了输出和数字后面出现的奇怪符号外,其他一切都正常工作 此时数组中的第一个数字,元素之间的第二个不同,3d-第二个已经移动到第二个数组中。 输出: 1 2/3 44/722/9一/Assembly 计算数组中数字之间的差异(部件,Irvine),assembly,irvine32,Assembly,Irvine32,我在计算这些数字之间的差距。为此,我使用了两个数组。因此,除了输出和数字后面出现的奇怪符号外,其他一切都正常工作 此时数组中的第一个数字,元素之间的第二个不同,3d-第二个已经移动到第二个数组中。 输出: 1 2/3 44/722/9一/ 二, 这些符号来自哪里?什么原因?错误的寄存器?为什么在第一个循环中“gap”(数组)有正确的数字,但当我稍后遍历这个数组时,它只有2和有线符号 INCLUDE Irvine32.inc .data array byte 1,3,7,9 gap byte ?
二, 这些符号来自哪里?什么原因?错误的寄存器?为什么在第一个循环中“gap”(数组)有正确的数字,但当我稍后遍历这个数组时,它只有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
谢谢大家! 明白了!变量间隙初始化错误
这是array-1 dup(?)的正确初始化
间隙字节长度间隙字节?
您的意思是该类型对于此操作来说太小了吗?