А для какой операционной системы?
Для Windows:
.386
.model flat, c
option casemap :none
includelib msvcrt.lib
printf proto :dword, :vararg
scanf proto :dword, :vararg
_getch proto
_exit proto :dword
.data
Prompt db "Введите шестнадцатеричное число: ", 0
InFrm db "%x", 0
OutFrm db "Число в десятичной системе: %d", 13, 10, 10, \
"Для завершения работы нажмите любую клавишу. . .", 0
.data?
Number dd ?
.code
N172522903:
invoke printf, addr Prompt
invoke scanf, addr InFrm, addr Number
invoke printf, addr OutFrm, Number
invoke _getch
invoke _exit, 0
end N172522903
Для MS-DOS:
.model small
.stack 100h
.data
Prompt db "Введите шестнадцатеричное число: $"
Result db "Число в десятичной системе: $"
WaitMsg db 13, 10, 10, "Для завершения работы нажмите любую клавишу. . .$"
.386
.code
WriteDec:
push dx
test eax, eax
jns @F
push eax
mov al, 2Dh
int 29h
pop eax
neg eax
@@:
xor edx, edx
mov ebx, 10
div ebx
or dl, 30h
test eax, eax
jz @F
call WriteDec
@@:
mov al, dl
int 29h
pop dx
ret
ReadHex:
xor ebx, ebx
mov cx, bx
mov edx, ebx
mov esi, ebx
RepRead:
mov ah, 8
int 21h
test al, al
jnz @F
int 21h
jmp RepRead
@@:
mov bl, al
jcxz ReadSign
cmp al, 0Dh
jne @F
cmp cx, 1
jne ReadQuit
test bh, bh
jnz RepRead
jmp ReadQuit
@@:
cmp al, 8
jne ReadDig
cmp cx, 1
jne @F
xor esi, esi
mov ebx, esi
@@:
int 29h
mov al, 20h
int 29h
mov al, 8
int 29h
shr edx, 4
dec cx
jmp RepRead
ReadSign:
cmp al, 2Dh
jne @F
not esi
jmp SetSign
@@:
cmp al, 2Bh
jne ReadDig
SetSign:
mov bh, 1
jmp ReadNext
ReadDig:
sub al, 30h
cmp al, 9
jbe @F
and al, 0DFh
cmp al, 10h
jbe RepRead
sub al, 7
cmp al, 10h
jae RepRead
@@:
test edx, 0F0000000h
jnz RepRead
shl edx, 4
or dl, al
ReadNext:
inc cx
mov al, bl
int 29h
jmp RepRead
ReadQuit:
mov al, 0Dh
int 29h
mov al, 0Ah
int 29h
mov eax, edx
xor eax, esi
sub eax, esi
ret
N172522903:
mov ax, @data
mov ds, ax
mov dx, offset Prompt
mov ah, 9
int 21h
call ReadHex
push eax
mov ah, 9
mov dx, offset Result
int 21h
pop eax
call WriteDec
mov ah, 9
mov dx, offset WaitMsg
int 21h
mov ax, 0C08h
int 21h
mov ax, 4C00h
int 21h
end N172522903
Пример работы программы:
