Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

ASSEMBLY LANGUAGE FOR X86 (MASM) Please use modify the code below, it is just a

ID: 3871922 • Letter: A

Question

ASSEMBLY LANGUAGE FOR X86 (MASM) Please use modify the code below, it is just a loop of 10 years

Use Butcher's algorithm to calculate Easter for the next ten years in x86 assembly language. Use the code below to start

TITLE MASM Template                        (main.asm)

; Description:
;
; Revision date:

INCLUDE Irvine32.inc
COMMA=2ch
.data
march BYTE "March ",0
april BYTE "April ",0
y DWORD 2017
a dWORD ?
b DWORD ?
cc DWORD ?

.code
main PROC
    call Clrscr
    mov ecx, 10
NEXT:
     mov eax, y
    call WriteDec
    call crlf
    inc eax
    mov y, eax
    dec ecx
    jnz NEXT

mov edx,offset march
call WriteString

mov al, COMMA
call WriteChar
call CRLF

    exit
main ENDP

END main

Explanation / Answer

C code for butucer alogoritm

#include<stdio.h>

// using namespace std;

int main()

{

int intyear,intEasterDate,intEasterMonth;

int a, b, c, d, e, f, g, h, i, j, k, m, p;

printf("What's the year? ");

scanf("%d",&intyear);

printf("Easter Month is ");

if (intyear<2018||intyear>2028)

{printf("This calculator cannot serve you ");

return -1;}

a=intyear%19;

b=intyear/100;

c=intyear%100;

d=b/4;

e=b%4;

f=(b+8)/25;

g=(b-f+1)/3;

h=((19*a)+b-d-g+15)%30;

i=c/4;

j=c%4;

k=(32+(2*e)+(2*i)-h-j)%7;

m=(a+(11*h)+(22*k))/451;

intEasterMonth=(h+k-(7*m)+114)/31;

p=(h+k-(7*m)+114)%31;

intEasterDate=p+1;

return 0;

}

Assembly code for butucher algorithm

.LC0:

.string "What's the year? "

.LC1:

.string "%d"

.LC2:

.string "Easter Month is "

.LC3:

.string "This calculator cannot serve you"

main:

push rbp

mov rbp, rsp

sub rsp, 64

mov edi, OFFSET FLAT:.LC0

call puts

lea rax, [rbp-64]

mov rsi, rax

mov edi, OFFSET FLAT:.LC1

mov eax, 0

call scanf

mov edi, OFFSET FLAT:.LC2

call puts

mov eax, DWORD PTR [rbp-64] ; year is eneterd where the easter year to be calculated

cmp eax, 2017 ; comparing whathere year is less than 2017

jle .L2

mov eax, DWORD PTR [rbp-64]

cmp eax, 2028 ;comparing year is greater than 2018 so that easte year clculated only for year between 2017 and 2018

jle .L3

.L2:

mov edi, OFFSET FLAT:.LC3

call puts

mov eax, -1

jmp .L5

.L3:

mov ecx, DWORD PTR [rbp-64]

mov edx, 1808407283

mov eax, ecx

imul edx

sar edx, 3

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-4], eax

mov edx, DWORD PTR [rbp-4]

mov eax, edx

sal eax, 3

add eax, edx

add eax, eax

add eax, edx

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-4], eax

mov ecx, DWORD PTR [rbp-64]

mov edx, 1374389535

mov eax, ecx

imul edx

sar edx, 5

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-8], eax

mov ecx, DWORD PTR [rbp-64]

mov edx, 1374389535

mov eax, ecx

imul edx

sar edx, 5

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-12], eax

mov eax, DWORD PTR [rbp-12]

imul eax, eax, 100

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-12], eax

mov eax, DWORD PTR [rbp-8]

lea edx, [rax+3]

test eax, eax

cmovs eax, edx

sar eax, 2

mov DWORD PTR [rbp-16], eax

mov eax, DWORD PTR [rbp-8]

cdq

shr edx, 30

add eax, edx

and eax, 3

sub eax, edx

mov DWORD PTR [rbp-20], eax

mov eax, DWORD PTR [rbp-8]

lea ecx, [rax+8]

mov edx, 1374389535

mov eax, ecx

imul edx

sar edx, 3

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-24], eax

mov eax, DWORD PTR [rbp-8]

sub eax, DWORD PTR [rbp-24]

lea ecx, [rax+1]

mov edx, 1431655766

mov eax, ecx

imul edx

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-28], eax

mov edx, DWORD PTR [rbp-4]

mov eax, edx

sal eax, 3

add eax, edx

add eax, eax

add edx, eax

mov eax, DWORD PTR [rbp-8]

add eax, edx

sub eax, DWORD PTR [rbp-16]

sub eax, DWORD PTR [rbp-28]

lea ecx, [rax+15]

mov edx, -2004318071

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 4

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-32], eax

mov eax, DWORD PTR [rbp-32]

imul eax, eax, 30

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-32], eax

mov eax, DWORD PTR [rbp-12]

lea edx, [rax+3]

test eax, eax

cmovs eax, edx

sar eax, 2

mov DWORD PTR [rbp-36], eax

mov eax, DWORD PTR [rbp-12]

cdq

shr edx, 30

add eax, edx

and eax, 3

sub eax, edx

mov DWORD PTR [rbp-40], eax

mov eax, DWORD PTR [rbp-20]

lea edx, [rax+16]

mov eax, DWORD PTR [rbp-36]

add eax, edx

add eax, eax

sub eax, DWORD PTR [rbp-32]

sub eax, DWORD PTR [rbp-40]

mov ecx, eax

mov edx, -1840700269

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 2

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-44], eax

mov edx, DWORD PTR [rbp-44]

mov eax, edx

sal eax, 3

sub eax, edx

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-44], eax

mov edx, DWORD PTR [rbp-32]

mov eax, edx

sal eax, 2

add eax, edx

add eax, eax

add edx, eax

mov eax, DWORD PTR [rbp-4]

add edx, eax

mov eax, DWORD PTR [rbp-44]

imul eax, eax, 22

lea ecx, [rdx+rax]

mov edx, 1218970763

mov eax, ecx

imul edx

sar edx, 7

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-48], eax

mov edx, DWORD PTR [rbp-32]

mov eax, DWORD PTR [rbp-44]

add edx, eax

mov eax, DWORD PTR [rbp-48]

mov ecx, eax

sal eax, 3

sub ecx, eax

mov eax, ecx

add eax, edx

lea ecx, [rax+114]

mov edx, -2078209981

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 4

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-52], eax

mov edx, DWORD PTR [rbp-32]

mov eax, DWORD PTR [rbp-44]

add edx, eax

mov eax, DWORD PTR [rbp-48]

mov ecx, eax

sal eax, 3

sub ecx, eax

mov eax, ecx

add eax, edx

lea ecx, [rax+114]

mov edx, -2078209981

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 4

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-56], eax

mov edx, DWORD PTR [rbp-56]

mov eax, edx

sal eax, 5

sub eax, edx

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-56], eax

mov eax, DWORD PTR [rbp-56]

add eax, 1

mov DWORD PTR [rbp-60], eax

mov eax, 0

.L5:

leave

ret.LC0:

.string "What's the year? "

.LC1:

.string "%d"

.LC2:

.string "Easter Month is "

.LC3:

.string "This calculator cannot serve you"

main:

push rbp

mov rbp, rsp

sub rsp, 64

mov edi, OFFSET FLAT:.LC0

call puts

lea rax, [rbp-64]

mov rsi, rax

mov edi, OFFSET FLAT:.LC1

mov eax, 0

call scanf

mov edi, OFFSET FLAT:.LC2

call puts

mov eax, DWORD PTR [rbp-64]

cmp eax, 2017

jle .L2

mov eax, DWORD PTR [rbp-64]

cmp eax, 2028

jle .L3

.L2:

mov edi, OFFSET FLAT:.LC3

call puts

mov eax, -1

jmp .L5

.L3:

mov ecx, DWORD PTR [rbp-64]

mov edx, 1808407283

mov eax, ecx

imul edx

sar edx, 3

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-4], eax

mov edx, DWORD PTR [rbp-4]

mov eax, edx

sal eax, 3

add eax, edx

add eax, eax

add eax, edx

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-4], eax

mov ecx, DWORD PTR [rbp-64]

mov edx, 1374389535

mov eax, ecx

imul edx

sar edx, 5

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-8], eax

mov ecx, DWORD PTR [rbp-64]

mov edx, 1374389535

mov eax, ecx

imul edx

sar edx, 5

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-12], eax

mov eax, DWORD PTR [rbp-12]

imul eax, eax, 100

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-12], eax

mov eax, DWORD PTR [rbp-8]

lea edx, [rax+3]

test eax, eax

cmovs eax, edx

sar eax, 2

mov DWORD PTR [rbp-16], eax

mov eax, DWORD PTR [rbp-8]

cdq

shr edx, 30

add eax, edx

and eax, 3

sub eax, edx

mov DWORD PTR [rbp-20], eax

mov eax, DWORD PTR [rbp-8]

lea ecx, [rax+8]

mov edx, 1374389535

mov eax, ecx

imul edx

sar edx, 3

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-24], eax

mov eax, DWORD PTR [rbp-8]

sub eax, DWORD PTR [rbp-24]

lea ecx, [rax+1]

mov edx, 1431655766

mov eax, ecx

imul edx

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-28], eax

mov edx, DWORD PTR [rbp-4]

mov eax, edx

sal eax, 3

add eax, edx

add eax, eax

add edx, eax

mov eax, DWORD PTR [rbp-8]

add eax, edx

sub eax, DWORD PTR [rbp-16]

sub eax, DWORD PTR [rbp-28]

lea ecx, [rax+15]

mov edx, -2004318071

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 4

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-32], eax

mov eax, DWORD PTR [rbp-32]

imul eax, eax, 30

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-32], eax

mov eax, DWORD PTR [rbp-12]

lea edx, [rax+3]

test eax, eax

cmovs eax, edx

sar eax, 2

mov DWORD PTR [rbp-36], eax

mov eax, DWORD PTR [rbp-12]

cdq

shr edx, 30

add eax, edx

and eax, 3

sub eax, edx

mov DWORD PTR [rbp-40], eax

mov eax, DWORD PTR [rbp-20]

lea edx, [rax+16]

mov eax, DWORD PTR [rbp-36]

add eax, edx

add eax, eax

sub eax, DWORD PTR [rbp-32]

sub eax, DWORD PTR [rbp-40]

mov ecx, eax

mov edx, -1840700269

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 2

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-44], eax

mov edx, DWORD PTR [rbp-44]

mov eax, edx

sal eax, 3

sub eax, edx

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-44], eax

mov edx, DWORD PTR [rbp-32]

mov eax, edx

sal eax, 2

add eax, edx

add eax, eax

add edx, eax

mov eax, DWORD PTR [rbp-4]

add edx, eax

mov eax, DWORD PTR [rbp-44]

imul eax, eax, 22

lea ecx, [rdx+rax]

mov edx, 1218970763

mov eax, ecx

imul edx

sar edx, 7

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-48], eax

mov edx, DWORD PTR [rbp-32]

mov eax, DWORD PTR [rbp-44]

add edx, eax

mov eax, DWORD PTR [rbp-48]

mov ecx, eax

sal eax, 3

sub ecx, eax

mov eax, ecx

add eax, edx

lea ecx, [rax+114]

mov edx, -2078209981

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 4

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-52], eax

mov edx, DWORD PTR [rbp-32]

mov eax, DWORD PTR [rbp-44]

add edx, eax

mov eax, DWORD PTR [rbp-48]

mov ecx, eax

sal eax, 3

sub ecx, eax

mov eax, ecx

add eax, edx

lea ecx, [rax+114]

mov edx, -2078209981

mov eax, ecx

imul edx

lea eax, [rdx+rcx]

sar eax, 4

mov edx, eax

mov eax, ecx

sar eax, 31

sub edx, eax

mov eax, edx

mov DWORD PTR [rbp-56], eax

mov edx, DWORD PTR [rbp-56]

mov eax, edx

sal eax, 5

sub eax, edx

sub ecx, eax

mov eax, ecx

mov DWORD PTR [rbp-56], eax

mov eax, DWORD PTR [rbp-56]

add eax, 1

mov DWORD PTR [rbp-60], eax

mov eax, 0

.L5:

leave

ret

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote