0% found this document useful (0 votes)
36 views7 pages

Hex-Bin Conversion and Simple Math in Assembly

It is an assembly language 8086

Uploaded by

70148553
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)
36 views7 pages

Hex-Bin Conversion and Simple Math in Assembly

It is an assembly language 8086

Uploaded by

70148553
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

 Problem no 1

.Model small
.stack 100h
.data
promptHex db ‘Enter a hexadecimal digit (0-9, A-F): $’
hexNum db ‘?’
hexMsg db 13,10,’Hexadecimal: $’
binMsg db 13,10,’Binary: $’
binResult db 4 dup(‘0’)
invalidInputMsg db 13,10, ‘Invalid input! Please enter a valid
hexadecimal digit (0-9, A-F). $’

.code
Main:
Mov ax, @data
Mov ds, ax

Mov dx, OFFSET promptHex


Mov ah, 09h
Int 21h

Mov ah, 01h


Int 21h
Mov [hexNum], al

Mov al, [hexNum]


Cmp al, ‘0’
Jb not_valid_input
Cmp al, ‘9’
Jbe convert_digit
Cmp al, ‘A’
Jb not_valid_input
Cmp al, ‘F’
Ja not_valid_input

Sub al, ‘A’


Add al, 0Ah
Jmp convert_done

Convert_digit:
Sub al, ‘0’

Convert_done:
Mov si, OFFSET binResult
Mov bl, 04h

Convert_loop:
Test al, 8
Jz no_set_bit

Mov byte ptr [si], ‘1’


Jmp next_bit

No_set_bit:
Mov byte ptr [si], ‘0’

Next_bit:
Inc si
Shl al, 1
Dec bl
Jnz convert_loop

Mov dx, OFFSET hexMsg


Mov ah, 09h
Int 21h

Mov dx, OFFSET hexNum


Mov ah, 09h
Int 21h

Mov dx, OFFSET binMsg


Mov ah, 09h
Int 21h

Mov dx, OFFSET binResult


Mov ah, 09h
Int 21h

Mov ah, 4Ch


Int 21h
Not_valid_input:
Mov dx, OFFSET invalidInputMsg
Mov ah, 09h
Int 21h

Mov ah, 4Ch


Int 21h

End main

 Problem no 2
.model small
.stack 100h
.data
promptBin db ‘Enter a 4-bit binary number (0000-1111): $’
binNum db 4 dup(‘?’)
binMsg db 13,10,’Binary: $’
hexMsg db 13,10,’Hexadecimal: $’
hexResult db ‘?’
invalidInputMsg db 13,10, ‘Invalid input! Please enter a valid 4-bit
binary number (0000-1111). $’

.code
Main:
Mov ax, @data
Mov ds, ax

Mov dx, OFFSET promptBin


Mov ah, 09h
Int 21h

Mov si, OFFSET binNum


Mov cx, 4
Read_binary:
Mov ah, 01h
Int 21h
Mov [si], al
Inc si
Loop read_binary
Mov si, OFFSET binNum
Mov cx, 4
Validate_binary:
Mov al, [si]
Cmp al, ‘0’
Jb not_valid_input
Cmp al, ‘1’
Ja not_valid_input
Inc si
Loop validate_binary

Mov si, OFFSET binNum


Mov al, 0
Mov cx, 4

Convert_to_hex:
Shl al, 1
Mov dl, [si]
Sub dl, ‘0’
Or al, dl
Inc si
Loop convert_to_hex

Cmp al, 9
Jbe convert_done
Add al, ‘A’-10
Jmp store_hex

Convert_done:
Add al, ‘0’

Store_hex:
Mov [hexResult], al

Mov dx, OFFSET binMsg


Mov ah, 09h
Int 21h

Mov dx, OFFSET binNum


Mov ah, 09h
Int 21h

Mov dx, OFFSET hexMsg


Mov ah, 09h
Int 21h

Mov dx, OFFSET hexResult


Mov ah, 09h
Int 21h

Mov ah, 4Ch


Int 21h

Not_valid_input:
Mov dx, OFFSET invalidInputMsg
Mov ah, 09h
Int 21h

Mov ah, 4Ch


Int 21h

End main

 Problem no 3

.model small
.stack 100h
.data
Prompt1 db ‘Enter first number (0-9): $’
Prompt2 db 13,10, ‘Enter second number (0-9): $’
promptOp db 13,10, ‘Enter 1 for addition, 2 for subtraction: $’
resultMsg db 13,10, ‘Result: $’
invalidMsg db 13,10, ‘Invalid input!$’
num1 db ?
num2 db ?
result db ?
operation db ?

.code
Main:
Mov ax, @data
Mov ds, ax

Mov dx, OFFSET prompt1


Mov ah, 09h
Int 21h

Mov ah, 01h


Int 21h
Sub al, ‘0’
Mov num1, al

Mov dx, OFFSET prompt2


Mov ah, 09h
Int 21h

Mov ah, 01h


Int 21h
Sub al, ‘0’
Mov num2, al

Mov dx, OFFSET promptOp


Mov ah, 09h
Int 21h

Mov ah, 01h


Int 21h
Mov operation, al

Cmp operation, ‘1’


Je addition
Cmp operation, ‘2’
Je subtraction

Mov dx, OFFSET invalidMsg


Mov ah, 09h
Int 21h
Jmp exit
Addition:
Call add_proc
Jmp display_result

Subtraction:
Call sub_proc
Jmp display_result

Add_proc proc
Mov al, num1
Add al, num2
Mov result, al
Ret
Add_proc endp

Sub_proc proc
Mov al, num1
Sub al, num2
Mov result, al
Ret
Sub_proc endp

Display_result:
Mov dx, OFFSET resultMsg
Mov ah, 09h
Int 21h

Mov al, result


Add al, ‘0’
Mov dl, al
Mov ah, 02h
Int 21h

Exit:
Mov ah, 4Ch
Int 21h

End main

You might also like