Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2013, 08:59   #1
miyachi
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию подсчитать все трёхзначные десятичные числа assembler

По введенному целому числу М подсчитать все трёхзначные десятичные числа,сумма цифр которых равна М или сообщить о том, что их нет.

Я здесь набросал, не понимаю все таки как должен сделать эту программу....
Код:
include 'emu8086.inc'
 
 
org 100h    
sum = 0
  begin:
 
     
call for
 
 for:       
 
   ; for(i=100; i<=999; i++)
        ;i++ 
      xor cx,cx 
      mov cx,999 ;i<=999 
      push cx
    loop:     mov ax,cx
        mov bx,100 ;
        div bx  
        ; CALL PRINT_NUM_UNS
        mov bl,10 ;10 ??? 10h
        div bl  
        
        ; CALL PRINT_NUM_UNS
        mov cl,al
       add cl,ah
       mov ax,dx
       div bl
       add cl,al
       add cl,ah 
               
       mov bx,cx
       
           mov cx,chislo
      
            cmp cx,bx    
            mov ax,bx
            push ax
       je nn
      nn:  pop ax
      
      CALL PRINT_NUM_UNS
      jne n2
      n2: pop cx
          cmp cx,100 
          dec cx
          jnb loop
          jb end begin
        
       
ret
      
       DEFINE_PRINT_NUM_UNS  
 
ret
  chislo dw 21    
  
  
  end begin
miyachi вне форума Ответить с цитированием
Старый 04.03.2013, 20:58   #2
miyachi
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию

Код:
include 'emu8086.inc'
org 100h
  M = 14d
  start:
      xor ax,ax      ;ochiwaem registr ax
      mov cx,899     ; kolichestvo iteracii zanosim v cx=999-100
      mov si,0       ; ustanavlivaem indeks pervogo elementa massiva
for:                 ; metka cikl
      mov bx,i       ; pri 1-oi iteracii znachenie i=100  otpravlyaem v bx
      mov mas[si],bx ; mas[si]=bx
      mov ax,mas[si] ;dlya raschetov ax=mas[si]
      
      call summa     ; vizov funkcii dlya podscheta summi trexznachnogo chisla
      cmp cl,M      ; chislo M sravniem s summoi cifr trexznachnogo chisla
      je yes         ; esli ravno to na metku yes
      jne net        ; esli ne ravni to na metku net
      
yes:
      mov ah,09h           
      mov dx,offset rslt   ; pechataem text 'summa cifr'
      int 21h              
      mov ax,mas[si]
      CALL PRINT_NUM_UNS   ;pechataem elementi summa cifr kotorix ravna M
net:
      inc i                ; uvelichivaem i+1
      inc si               ; uvelichivaem si+1
      loop for
      
summa proc
      xor dx,dx
      mov bx,100          ; esli ono desyatichnoe to delim na 100, esli 16richnoe to delim na 100h
      div bx
      mov bl,10           ; 10 ili 10h
      div bl
      mov cl,al
      add cl,ah
      mov ax,dx
      div bl
      add cl,al           
      add cl,ah           ; teper v cl summa cifr(v lubom sluchae v 16-oi sisteme 
endp
ret
 
mas   dw  900 dup (?)     ; inicializaciya massiva
i     dw  100d                            ; nachalnoe trehznachnoe chislo 
rslt  db  13,10, 'summa cifr ravnaya M: $'
 
DEFINE_PRINT_NUM_UNS                    ; trebuetsya dlya print_num
end start
как закончить цикл на трехзначных циклах, начинается все нормально со 100 до 1000, а нужно со 100 до 999 включительно
miyachi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать программу,имеющая процедуру,кторая в производном текстовом файле,которая имеет слова и числа,изменяющая все числа числа,ме Fingergod Паскаль, Turbo Pascal, PascalABC.NET 0 13.12.2012 20:08
Вычислить значение целого числа, десятичные цифры которого формируются датчиком случайных чисел (задача С шарп) mill63 Помощь студентам 0 22.11.2011 13:58
Перевод десятичные числа в двоичные ProgDel Помощь студентам 2 15.02.2010 23:15
Подсчитать и Вывести массив (assembler) tavi Помощь студентам 0 25.04.2009 03:18