Pegasik » 09 апр 2008, 11:40
Вот что получилось:
Код: Выделить всё
.MODEL Small
.STACK 100h
.DATA
String db 16 dup (?),'$' ; Резервируем 16 байт для строки
StringEnd = $-1 ; Указывает на символ '$'
Number = 6219
Mes_1 db 0dh, 0ah, "Chislo 6219 v 16-y sisiteme schisleniya - ", "$"
Mes_2 db 0dh, 0ah, "Chislo 6219 v 8-y sisiteme schisleniya - ", " $"
Mes_3 db 0dh, 0ah, "Chislo 6219 v 2-y sisiteme schisleniya - ", " $"
.CODE
ORG 100h
Start:
mov ax,@data
mov ds,ax
mov es,ax
lea dx,Mes_1
mov ah,09h
int 21h
mov ax,Number
mov bx,16
std
lea di,StringEnd-10
call Perevod_num
mov ah,09h
lea dx,String
int 21h
lea dx,Mes_2
mov ah,09h
int 21h
mov ax,Number
mov bx,8
lea di,StringEnd-9
call Perevod_num
mov ah,09h
lea dx,String
int 21h
lea dx,Mes_3
mov ah,09h
int 21h
mov ax,Number
mov bx,2
lea di,StringEnd-1
call Perevod_num
mov ah,09h
lea dx,String
int 21h
mov ah,8
int 21h
ret
Break db 13,10
;---------------------------------Перевод числа-----------------------------
Perevod_num proc
push dx
push di
push cx
xor cx,cx
Proverka_num:
xor dx,dx
div bx
xchg ax,dx
add al,'0'
cmp al,'9'
jbe Cifra
add al,'A'-('9'+1)
Cifra:
stosb
xchg ax,dx
inc cx
test ax,ax
jne Proverka_num
pop cx
pop di
pop dx
ret
Perevod_num endp
end Start
Вот что получилось:
[code]
.MODEL Small
.STACK 100h
.DATA
String db 16 dup (?),'$' ; Резервируем 16 байт для строки
StringEnd = $-1 ; Указывает на символ '$'
Number = 6219
Mes_1 db 0dh, 0ah, "Chislo 6219 v 16-y sisiteme schisleniya - ", "$"
Mes_2 db 0dh, 0ah, "Chislo 6219 v 8-y sisiteme schisleniya - ", " $"
Mes_3 db 0dh, 0ah, "Chislo 6219 v 2-y sisiteme schisleniya - ", " $"
.CODE
ORG 100h
Start:
mov ax,@data
mov ds,ax
mov es,ax
lea dx,Mes_1
mov ah,09h
int 21h
mov ax,Number
mov bx,16
std
lea di,StringEnd-10
call Perevod_num
mov ah,09h
lea dx,String
int 21h
lea dx,Mes_2
mov ah,09h
int 21h
mov ax,Number
mov bx,8
lea di,StringEnd-9
call Perevod_num
mov ah,09h
lea dx,String
int 21h
lea dx,Mes_3
mov ah,09h
int 21h
mov ax,Number
mov bx,2
lea di,StringEnd-1
call Perevod_num
mov ah,09h
lea dx,String
int 21h
mov ah,8
int 21h
ret
Break db 13,10
;---------------------------------Перевод числа-----------------------------
Perevod_num proc
push dx
push di
push cx
xor cx,cx
Proverka_num:
xor dx,dx
div bx
xchg ax,dx
add al,'0'
cmp al,'9'
jbe Cifra
add al,'A'-('9'+1)
Cifra:
stosb
xchg ax,dx
inc cx
test ax,ax
jne Proverka_num
pop cx
pop di
pop dx
ret
Perevod_num endp
end Start
[/code]