Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Ввод и вывод числа в десятичном представлении


Автор: user2 27.3.2007, 21:39
Помогите, 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

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

Автор: user2 28.3.2007, 07:42
Помогите, 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


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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)