Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод и вывод числа в десятичном представлении 
:(
    Опции темы
user2
Дата 27.3.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.3.2007

Репутация: нет
Всего: 1



Помогите, please, разобраться с программой - ввод и вывод числа в десятичном представлении, а точнее с процедурами output и EnterFigure
Помощь хотелось бы получить, например, в виде подробных коментариев рядом с командами  

.model small
.stack 100h
.data

rezAX db "АХ=$"
stra db "Введите число: $"
message db "Вы не ввели число. В регистре АХ хранится 0. $"
n db 10,13,"$"
max db 6
len db 0
figure db 6 dup ("$")

.code

output proc;вывод числа на экран
;>>занесение цифр в стек
xor cx, cx 
xor bx, bx 
push ax
mov bl, 10
cycl1:
   xor dx,dx
   div bx
   add dl, 30h
   push dx
   inc cl
   cmp ax,0
   JZ next
jmp cycl1
;<<занесение цифр в стек

next:    

mov ah, 9h 
lea dx, rezAX 
int 21h    


xor ax,ax
xor dx,dx
mov ah, 2h 
cycl2:
   pop dx         
   int 21h        
loop cycl2
pop ax

ret  
output endp

;-----------------------------------------------------------------------------------------------
EnterFigure proc
;чтение числа в регистр AX
xor ax,ax         ;чтение 
mov ah, 0Ah    ;числа
lea dx, max     ;(строки)
int 21h             

xor ax,ax
xor bx,bx
xor cx,cx
lea si, len
mov cl, [si] 
cmp cl,0                
JZ showmessage     
sub cl,1

lea si, figure
mov al,[si]
sub al, 30h

cmp cx,0              
JZ next1                

cycl:
   mov bl,10
   mul bx
   inc si
   mov bl,[si]
   sub bl, 30h
   add ax,bx
loop cycl
jmp next1

showmessage:
mov ah, 9h 
lea dx, message 
int 21h        
xor ax, ax  

next1:

ret
EnterFigure endp



main:
mov ax,@data
mov ds,ax
xor ax, ax

mov ah, 9h 
lea dx, stra 
int 21h        

mov ah, 2h
mov dl, 10    
int 21h       
mov dl,13
int 21h

call EnterFigure  ;>>вызов функции для ввода числа(диапазон вводимого числа 0..65535)

mov bx, ax

;>>перевод каретки
mov ah, 2h
mov dl, 10    
int 21h       
mov dl,13
int 21h

mov ax, bx

call output ;>>вызов функции для вывода числа из регистра АХ на экран

mov ah, 1h
int 21h
mov ah,4ch
int 21h
end main

PM MAIL   Вверх
Kuvaldis
Дата 27.3.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Отредактируй свой пост и вставь теги кода (кнопочка "Код", выбрать АСМ)
Иначе нет желания разбираться


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
user2
Дата 28.3.2007, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.3.2007

Репутация: нет
Всего: 1



Помогите, please, разобраться с программой - ввод и вывод числа в десятичном представлении, а точнее с процедурами output и EnterFigure
Помощь хотелось бы получить, например, в виде подробных коментариев рядом с командами 
Код


.model small
.stack 100h
.data

rezAX db "АХ=$"
stra db "Введите число: $"
message db "Вы не ввели число. В регистре АХ хранится 0. $"
n db 10,13,"$"
max db 6
len db 0
figure db 6 dup ("$")

.code

output proc;вывод числа на экран
;>>занесение цифр в стек
xor cx, cx 
xor bx, bx 
push ax
mov bl, 10
cycl1:
   xor dx,dx
   div bx
   add dl, 30h
   push dx
   inc cl
   cmp ax,0
   JZ next
jmp cycl1
;<<занесение цифр в стек

next:    

mov ah, 9h 
lea dx, rezAX 
int 21h    


xor ax,ax
xor dx,dx
mov ah, 2h 
cycl2:
   pop dx         
   int 21h        
loop cycl2
pop ax

ret  
output endp

;-----------------------------------------------------------------------------------------------
EnterFigure proc
;чтение числа в регистр AX
xor ax,ax         ;чтение 
mov ah, 0Ah    ;числа
lea dx, max     ;(строки)
int 21h             

xor ax,ax
xor bx,bx
xor cx,cx
lea si, len
mov cl, [si] 
cmp cl,0                
JZ showmessage     
sub cl,1

lea si, figure
mov al,[si]
sub al, 30h

cmp cx,0              
JZ next1                

cycl:
   mov bl,10
   mul bx
   inc si
   mov bl,[si]
   sub bl, 30h
   add ax,bx
loop cycl
jmp next1

showmessage:
mov ah, 9h 
lea dx, message 
int 21h        
xor ax, ax  

next1:

ret
EnterFigure endp



main:
mov ax,@data
mov ds,ax
xor ax, ax

mov ah, 9h 
lea dx, stra 
int 21h        

mov ah, 2h
mov dl, 10    
int 21h       
mov dl,13
int 21h

call EnterFigure  ;>>вызов функции для ввода числа(диапазон вводимого числа 0..65535)

mov bx, ax

;>>перевод каретки
mov ah, 2h
mov dl, 10    
int 21h       
mov dl,13
int 21h

mov ax, bx

call output ;>>вызов функции для вывода числа из регистра АХ на экран

mov ah, 1h
int 21h
mov ah,4ch
int 21h
end main


PM MAIL   Вверх
MAKCim
Дата 28.3.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Цитата(user2 @  27.3.2007,  21:39 Найти цитируемый пост)
Помощь хотелось бы получить, например, в виде подробных коментариев рядом с командами  

если совсем ничего не понятно, думаю надо начать с какого-нибудь учебника - Зубкова например
иначе пиши какие конкретно команды не понятны


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.