我是x86程序集的新手。 我的输出目前看起来像这样:
1|*
2|** ...
8|********
9|*********
10|**********
11|***********
我希望在1-9中有一个空格,以便它形成一条直线。像这样:
9|
10|
11|
我不知道怎么做。我想也许可以使用printChar(我希望它在x86程序集中)
我打印星星和线条的代码:
beginLoop: dec numItems
push numItems
call printInt //Prints 'numItems' number
mov al,'|'
push al
call printChar //Prints bar line next to number
starLoop: mov al, '*'
push al
call printChar //Prints a single star
mov [numStars], 0
inc numStars //numStars increases by 1
mov ecx, [esi] //ebx knows inputted value
cmp [numStars], ecx //numStars must equal value inputted
jne starLoop
nextValue : call printNewLine
add esi, 4 //Move to next number
cmp[esi], [items]
jne beginLoop
答案 0 :(得分:0)
您的代码现在将具有以下内容:
mov eax, [number]
call YourPrintRoutine
要在这些数字上引入右对齐,请将数字与10进行比较,并且仅当数字小于10时才首先打印单个空格字符。
mov eax, [number]
push eax
cmp eax, 10
jnb NotBelow10
push " "
call PrintChar
NotBelow10:
call PrintInt
mov [numStars], 0
,它可以显示正确数量的星星,这是一个奇迹!dec numItems
减少一个值时,你会在屏幕上看到一个递增的数字序列,这很奇怪!