Показать сообщение отдельно
Старый 19.05.2005, 01:01     # 6
Willow
Junior Member
 
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118

Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)
;На 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
Willow вне форума