0% found this document useful (0 votes)
27 views14 pages

Assembly Language Lab Solutions

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views14 pages

Assembly Language Lab Solutions

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

National Textile University

Department of Computer Science


Lab#12: COAL
LAB SUBMISSION
Instructor: Sir Qadeer
Registration # 23-NTU-CS-1244 Name Ali Ul Murtaza Alvi

Submission Time:

Note Solve the following problems using the concepts we have covered so far

Question: Solve following Questions using Registers in Assembly Language.


And Display the Result.

(Q-01)
Code:

INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
.data

.code
main PROC
mov al, 15 ;0000 1111
shl al, 4 ;4-bit shift left = 1111 0000
mov ah, 0 :ah=0000 0000, al=1111 0000

movzx eax, ax
call WriteDec
call DumpRegs

invoke ExitProcess, 0

main ENDP
END main

(Q-02)
Code:

INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
.data

.code
main PROC
mov ax, 42 ;0010 1010
shr ax, 1 ;0010 1010 -> 0001 0101 = 21
mov bx, ax

movzx eax, bx
call WriteDec
call Crlf

mov ax, 42 ;0010 1010


and ax, 1 ;0010 1010 AND 1 = 0
movzx eax, ax
call WriteDec
call Crlf
invoke ExitProcess, 0

main ENDP
END main
(Q-03)
(a)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data

.code
main PROC
mov al, 7Dh ;0111 1101
shr al, 1 ;3E=0011 1110, CF=1
call DumpRegs

movzx eax, al
call WriteHex

call Crlf
invoke ExitProcess, 0
main ENDP
END main
(b)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data

.code
main PROC
mov al, 7Dh ;0111 1101
shl al, 3 ;E8= 1110 1000, CF=1
call DumpRegs

movzx eax, al
call WriteHex
call Crlf
invoke ExitProcess, 0
main ENDP
END main

(c)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data

.code
main PROC
mov al, 92h ;1001 0010 -> -110
sar al, 1 ;1001 0010 -> 1100 1001 = -55 = C9
call DumpRegs

movzx eax, al
call WriteHex

call Crlf
invoke ExitProcess, 0
main ENDP
END main

(d)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data

.code
main PROC
mov al, 92h ;1001 0010
sal al, 3 ;1001 0010 -> 1001 0000 = 90
call DumpRegs

movzx eax, al
call WriteHex

call Crlf
invoke ExitProcess, 0
main ENDP
END main

(Q-04)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
.data
msg1 BYTE "Before ROL: ", 0
msg2 BYTE "After ROL: ", 0
.code
main PROC
mov al, 10101100b
mov edx, OFFSET msg1
call WriteString
movzx eax, al
call WriteBin

rol al, 3 ;1010 1100 -> 0110 0101 CF=1

call Crlf
mov edx, OFFSET msg2
call WriteString
movzx eax, al
call WriteBin
call Crlf

invoke ExitProcess, 0

main ENDP
END main
(Q-05)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data
msg1 BYTE "Before ROR: ", 0
msg2 BYTE "After ROR: ", 0
.code
main PROC
mov ax, 0ABCDh ;1010 1011 1100 1101 = ABCD
mov edx, OFFSET msg1
call WriteString
movzx eax, ax
call WriteHex

ror ax, 5 ;1010 1011 1100 1101 -> 0110 1101 0101 1110 = 6D5E

call Crlf

mov edx, OFFSET msg2


call WriteString
movzx eax, ax
call WriteHex
call Crlf

call WriteBin
call Crlf
invoke ExitProcess, 0

main ENDP
END main
(Q-06)
(SCL)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
.data

.code
main PROC
mov dx, 0ABCDh ;1010 1011 1100 1101
stc ;CF = 1
call DumpRegs
movzx eax, dx
call WriteHex
call Crlf

call WriteBin
call Crlf

stc
rcl dx, 1 ;1010 1011 1100 1101 -> 0101 0111 1001 1011 = 579B, CF=1
call DumpRegs
movzx eax, dx
call WriteHex
call Crlf
call WriteBin
invoke ExitProcess, 0

main ENDP
END main
(SCR)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
.data

.code
main PROC
mov dx, 0ABCDh ;1010 1011 1100 1101
stc ; CF = 1
call DumpRegs
movzx eax, dx
call WriteHex
call Crlf
call WriteBin
call Crlf

stc
rcr dx, 1 ;1010 1011 1100 1101 -> 1101 0101 1110 0110 = D5E6, CF=1
call DumpRegs
movzx eax, dx
call WriteHex
call Crlf
call WriteBin
invoke ExitProcess, 0
main ENDP
END main

(Q-07)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
.data

.code
main PROC
mov ax, 1234h ;0001 0010 0011 0100
mov bx, 5678h ;0101 0110 0111 1000

shrd ax, bx, 16 ;0101 0110 0111 1000

movzx eax, ax
call WriteHex
call Crlf
invoke ExitProcess, 0

main ENDP
END main
(Q-08)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data

.code
main PROC
mov eax, 12345678h
mov ebx, 87654321h

add eax, ebx


call DumpRegs
call Crlf

adc ebx, 0
call DumpRegs
call Crlf

call WriteDec

invoke ExitProcess, 0
main ENDP
END main
(Q-09)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data

.code
main PROC
mov ax, 1234h
mov bx, 5678h

sub ax, bx
call DumpRegs
call Crlf

sbb bx, 0
call DumpRegs
call Crlf

call WriteDec

invoke ExitProcess, 0
main ENDP
END main
(Q-10)
Code:
INCLUDE [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]
INCLUDELIB [Link]

.data
var1 DWORD 20
var2 DWORD 10
var3 DWORD 5
var4 DWORD ?

.code
main PROC
mov eax, var1
mov ebx, var2
mul ebx ;20 * 10 = 200

mov ebx, var2


sub ebx, var3 ;10 - 5 = 5

div ebx ;200/5 = 40

mov var4, eax


call WriteDec
call Crlf
invoke ExitProcess, 0
main ENDP
END main

You might also like