; THIS CODE HAS NOT BEEN TESTED AND IS NOT FULLY OPERATIONAL. ; Problem Statement: Write X86/64 ALP to perform multiplication of two 8-bit hexadecimal numbers. Using successive addition method. (Use of 64-bit registers is expected). ; Code from Microprocessor (SPPU - Second Year - Computer Engineering - Content) repository on KSKA Git: https://git.kska.io/sppu-se-comp-content/Microprocessor/ ; BEGINNING OF CODE %macro print 2 mov rax,1 mov rdi,1 mov rsi,%1 mov rdx,%2 syscall %endmacro %macro accept 2 mov rax,0 mov rdi,0 mov rsi,%1 mov rdx,%2 syscall %endmacro section .data m1 db 10,"----- Multiplication using successive addition -----",10,13 l1 equ $-m1 m2 db 10,"Enter the multiplicand",10,13 l2 equ $-m2 m3 db 10,"Enter the multiplier",10,13 l3 equ $-m3 res db 10,"Multiplication of the numbers is::",10,13 rlen equ $-res section .bss numascii resb 03 mplier resq 02 mcand resq 02 ;result resq 01 dispbuff resb 04 section .txt global _start: _start: print m1,l1 print m2,l2 accept numascii,3 call packnum mov byte[mcand],bl print m3,l3 accept numascii,3 call packnum mov byte[mplier],bl print res,rlen mov rax,0 cmp qword[mplier],0 jz ll5 ll1: add rax,qword[mcand] dec qword[mplier] jnz ll1 ll5: call dispnum exit: mov rax,60 mov rbx,00 syscall dispnum: mov rbx,rax mov rcx,04 mov rdi,dispbuff up2: rol bx,4 mov al,bl and al,0fh cmp al,09 jbe dskip add al,07h dskip: add al,30h mov [rdi],al inc rdi loop up2 print dispbuff,4 ret packnum: mov bl,0 mov rcx,2 mov rsi,numascii up1: rol bl,04 mov al,[rsi] cmp al,39h jbe skip1 sub al,07h skip1: sub al,30h add bl,al inc rsi loop up1 ret