;На Tasm давно не писал, но всё же
.model tiny
.code
.586
org 100h
start:
;выводим пириветсвие
mov dx, offset message1
mov ah,9
int 21h
; считываем число
mov dx, offset buffer
mov ah, 0Ah
int 21h
;переводим число
xor si,si
mov al, byte ptr bufdata[si]
cmp al,'-'
JE NEGATIVE
inc si
mov al, byte ptr bufdata[si]
Call Conver
Jmp Skip
Negative:
Call Conver
Neg AL
Skip:
Xor AH, AH
Cmp AL, 0
JGE X2
Mov CL, AL
Mul CL
Mul CL
Jmp Exit
X2: Mul AL
Exit:
Mov DX, AX
Ret
message1 db 'Введите однозначное десятисное число $'
erro1 db 'Введённая информация не корректна'
buffer db 2
buflen db ?
bufdata dw
;Переводит символ шестнадцатиричный в AL
Conver:
Sub AL,'0'
JB ERROR
Cmp AL, 9
JNA ConverExit
Sub AL, 'A'-'0'
JB ERROR
Cmp AL, 'F'-'A'
JNA ConverExit1
Sub AL, 'a'-'A'
JB ERROR
Cmp AL, 'f'-'a'
JA Error
ConverExit:
Ret
ConverExit1:
Add AL,10
Ret
Error:
mov dx, offset error1
mov ah,9
int 21h
Ret
Ret
|