extern io_get_char, io_print_udec, io_newline
section .text
global main
main:
; Read column letter (A-H)
call io_get_char
mov ebx, eax ; ebx = column letter
; Read row digit (1-8)
call io_get_char
mov ecx, eax ; ecx = row digit
; Convert column: 'A'->1, 'B'->2, ..., 'H'->8
sub ebx, 'A'
add ebx, 1 ; ebx = column (1-8)
; Convert row: '1'->1, '2'->2, ..., '8'->8
sub ecx, '0' ; ecx = row (1-8)
; Your original algorithm continues here...
mov eax, 8
sub eax, ebx ; eax = 8 - col (columns to the right)
mov edx, 8
sub edx, ecx ; edx = 8 - row (rows above)
imul eax, edx ; eax = total cells in rectangle
add ebx, 1
add ecx, 1
add ebx, ecx
and ebx, 1 ; ebx = parity
add eax, ebx
shr eax, 1 ; divide by 2
call io_print_udec
call io_newline
xor eax, eax
ret