【发布时间】:2016-03-01 18:22:19
【问题描述】:
我的汇编代码由两部分组成,一个叫 A.s,另一个叫 B.s。
A.s 是我的“主要”,我将输出流式传输到终端。
B.s 不能处理负整数,还会显示两次'Welcome msg'。
这里是代码;
B.s 代码
some code above this-----------------
LoopNextInt:
movq $buffInPtr, %r10
movq $buffIn, %r9
addq (%r10), %r9
xorq %r8, %r8
addq (%r9),%r8
cmpq $63, (%r9)
je inImage
cmpq $' ', (%r9)
je retNeg
cmpq $'-', (%r9)
je negSignFound
cmpb $'0', (%r9)
jl retNeg
cmpb $'9', (%r9)
jg retNeg
movzbq (%r9),%r11
imulq $10, %rax
subq $'0', %r11 #asci -> dec tal
addq %r11, %rax
//addq $1, (%r10)
incq buffInPtr
//addq $1, %r9
incq buffIn
jmp LoopNextInt
some code below this-----------------
then comes this ---------------
fillOutBuffWithChars:
movq $buffOutPtr,%r9
cmpq $63, (%r9)
je outImage
movzbq (%rdi), %r8
movb %r8b, (%r10)
cmpq $0, (%rdi)
je zeroInStringFoundz
addq $1,%rdi
addq $1,%r10
//addq $1,%r9
incq buffOutPtr
jmp fillOutBuffWithChars
zeroInStringFoundz:
ret
程序的测试运行;
Start. Enter 5 numbers, both negative and pos numbers.
Start. Enter 5 numbers, both negative and pos numbers.
5 1 3 6 -5
5+1+3+6+0=15
5
125
End
Made by Jozo
我注意到,如果我使用一个较小的句子,例如“输入 5 个数字”,它不会打印出两倍。
编辑;删除了不必要的代码,以便新用户更容易看到问题。
【问题讨论】: