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