Write an assembly language program to perform the following calculations: value1
ID: 3887190 • Letter: W
Question
Write an assembly language program to perform the following calculations:
value1 = a + b
value2 = a - b
value3 = a * b
value4 = value1 + value2 + value3
All data values (a and b) are word size. Allocate memory storage of appropriate sizes for value1, value2, value3, and value4. Test you program using the following data set (all values are in hex):
Data Set #
a
b
1
1
1
2
45
2
3
1111
2222
4
2222
1111
5
2
45
6
FFFF
25
7
0
65
8
1234
4321
9
4321
1234
10
ABCD
FF
11
FFFF
FFFF
Data Set #
a
b
1
1
1
2
45
2
3
1111
2222
4
2222
1111
5
2
45
6
FFFF
25
7
0
65
8
1234
4321
9
4321
1234
10
ABCD
FF
11
FFFF
FFFF
Explanation / Answer
Code for addition:
SYS_EXIT equ 1
SYS_READ equ 3
SYS_WRITE equ 4
STDIN equ 0
STDOUT equ 1
segment .data
msg1 db "Enter a digit ", 0xA,0xD
len1 equ $- msg1
msg2 db "Please enter a second digit", 0xA,0xD
len2 equ $- msg2
msg3 db "The sum is: "
len3 equ $- msg3
segment .bss
num1 resb 2
num2 resb 2
res resb 1
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg1
mov edx, len1
int 0x80
mov eax, SYS_READ
mov ebx, STDIN
mov ecx, num1
mov edx, 2
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg2
mov edx, len2
int 0x80
mov eax, SYS_READ
mov ebx, STDIN
mov ecx, num2
mov edx, 2
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg3
mov edx, len3
int 0x80
; moving the first number to eax register and second number to ebx
; and subtracting ascii '0' to convert it into a decimal number
mov eax, [num1]
sub eax, '0'
mov ebx, [num2]
sub ebx, '0'
; add eax and ebx
add eax, ebx
; add '0' to to convert the sum from decimal to ASCII
add eax, '0'
; storing the sum in memory location res
mov [res], eax
; print the sum
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, res
mov edx, 1
int 0x80
exit:
mov eax, SYS_EXIT
xor ebx, ebx
int 0x80
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.