x86 - Intel x86 NASM:转换终端输入
问题描述
我试图在启动程序时从终端获取输入(例如 ./exec 1234ABCDE)。它有 9 个字母/数字,我必须将输入分成三个块,将其相乘并将所有内容相加。字母代表数字:A = 10;B = 11; C = 12 以此类推。(1*7) + (2*3) + (3*1) + (4*7) + ([A]10*3) + ([B]11*1) + ... = 222 之后我需要总和的最后一位(在本例中为 2)。我希望你能得到我需要做的。
global main
extern printf
segment .data
printausweisnummer: db "Ausweisnummer: ",0
printnr: db "%d", 0
enter: db "",10,0
segment .text
main:
push printausweisnummer
call printf
add esp,4
mov eax, esp
add eax, 8
mov eax, [eax]
add eax, 4
mov eax, [eax]
add eax, 9
mov DWORD [eax],0
sub eax, 9
push eax
call printf
add esp,4
push enter
call printf
add esp,4
到目前为止一切都很好。我只是打印出输入。
mov eax, esp
add eax, 8
mov eax, [eax]
add eax, 4
mov eax, [eax]
;-----
现在在这里我需要 - 在这种情况下 - 'E' 并获取数字 14 以将其添加到寄存器中。(ASCII E -> 69; 69 - 55 = 14) 但是在这里调用 printf eax 时,它只会打印出“1234ABCDE”。
有没有人有一个解决方案,我如何获得“E”的 ASCII 码以将其转换为整数 14?
(然后取下一个(D)并将其乘以 3,依此类推......)
end:
push enter
call printf
add esp,4