In: Computer Science
Write assembler code to print even numbers from 1-20. Submit code and screenshot. I am coding in NASM on a SASM system.
;; x86 intel 32 assembly language section .data msg1 db "Even no. from 1 to 20",10,0 msg db "%d",10,0 section .text global main ;for gcc compiler we use function name main extern printf ; printf is builtin function of c main: push msg1 call printf ; pritnt the msg1 add esp,4 mov ecx,1 ;move 1 into ecx register for counter purpose mov ebx,2 ;move 2 into ebx for dividing by 2 mov eax,1 ;eax stores the number which we are going to check even lp1: xor edx,edx ; remainder is stored in edx register by default div ebx ;divide eax by ebx cmp edx,0 ;check remainder is zero or not jz printn ; if remainder is zero then jmp to label printn and print that number prev: inc ecx ; increment counter mov eax,ecx ;get the next no in eax register cmp ecx,21 ;compair with 21 jl lp1 ;if ecx is less that 21 then jump to lable lp1 ret ;if not less then exit from code printn: pusha ;push all cureent values of registers into stack because after calling printf values get modified push ecx ; push value of ecx into stack push msg ;push msg into stack call printf ;call printf function add esp,8 ;add 8 in stack pointer i.e. esp register popa ;pop all values of registeres that was push by pusha instruction jmp prev ;jump to label prev to check next no.