# Assembly Language Programming in MASM

Use the following data definitions for this problem:

.data

myBytes BYTE 40h, 30h, 20h, 10h myWords WORD 10 DUP(00ABh), 2000h myString BYTE "ABCDEFGHI"

myDword DWORD 12345678h

(A) What will be the value of EAX after each of the following instructions execute?

[5]

mov eax, TYPE myBytes ; a. mov eax, SIZEOF myBytes ; b. mov eax, TYPE myWords ; c. mov eax, LENGTHOF myWords ; d. mov eax, SIZEOF myString ; e.

(B) Write a single instruction that moves the first byte in myDword to the AL register. The resulting value in AL will be 78h. [2] Ans:

(C) Write an instruction that moves the second word in myDword to the AX register. The resulting value in AX will be 1234h. [2] Ans:

Use the following variable definitions for this problem:

.data

var1 SBYTE -8, -4, 2, 1 var2 WORD 2000h, 4000h, 6000h, 8000h

var3 SWORD -18, -46 var4 DWORD 11, 22, 33, 44, 55

(A) For each of the following statements, state if the instruction is valid. If invalid, provide the argument. [5] a. mov ax, var1

b. mov eax, var3

c. mov var2, var3

d. movzx ax, var1

e. mov ds, 1000h

(B) What will be the hexadecimal value of the destination operand after each of the following instructions execute in sequence? [2] mov al, var1 ; a. mov ah, [var1+3] ; b.

(C) What will be the value of the destination operand after each of the following instructions execute in sequence? [2] mov eax, var4 ; a. mov eax, [var4+4] ; b.

(D) What doe the instructions MOVSX and MOVZX do? Show an example. [4] Ans:

(A) Determine the value of AX after each of the following increment/decrement instructions (inc/dec). [4]

mov ax,00FFh

inc al ; AX = mov ax,0000h dec al ; AX =

(B) If the relative offset is encoded in a single signed byte (8 bits), [4] (a) what is the largest possible backward jump? Ans:

(b) what is the largest possible forward jump? Ans:

Problem 6 [5 points]

Determine whether the following is TRUE/FALSE.

a. Assembly language is a high-level language (i.e., similar to Java/C). F

b. Assembly language is a good choice for writing device driver code or code for embedded systems.

c. In 2’s complement system, there are two different representations of zero.

d. The largest positive number in 8-bit system is 1111 1111.

e. EAX serves as loop counter.

Problem 7 [5 points]

Write an assembly program that computes the expression: varD = -varA + (varB + varC). Fill in the code segment. You may only use ADD, MOV, and NEG instructions.

.data varA byte 10 varB byte 20 varC byte 30 varD byte ?

.code

1) What will be the value in EDX after each of the lines marked (a) and (b) execute? [2]

.data varA WORD 9000h varB WORD 5000h

.code

movsx edx, varA ; (a) _______________ movsx edx, varB ; (b) _ ______________

2) What will be the value in EAX after the following assembly code execute? [1]

mov eax, 1004FFFFh inc ax ; EAX =

3) What values will be in EAX and EBX registers after the following instructions executed. [2] eax: ebx:

.data

array1 DWORD 5 DUP(?)

.code mov eax, LENGTHOF array1 mov ebx, SIZEOF array1

Tietoa työnantajasta:
( 17 arvostelua ) Kurukshetra, India

Projektin tunnus: #27827906

## 2 freelancers are bidding on average ₹2900 for this job

nourreddinebenme

hello sir i can solve all questions i need to know when your deadline feel free to message me :)

₹3000 INR 1 päivässä
(114 arvostelua)
5.9
SUog

Hi, I can give answers to al questions of the assignmennt Thank you

₹2800 INR 1 päivässä
(69 arvostelua)
5.4