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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2013, 14:56   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию массив действительных чисел от 1 до 1000

здравствуйте, ассемблер изучал год назад, курс был упрощенный, научили работать только со строками, дак вот, помогите пожалуйста разобраться, на работе (у меня практика на предприятии) дали задание: сформировать массив действительных чисел от 1 до 1000, вывести все числа, которые делятся на 3 без остатка, например 3, 6, 9, 12, 15 и тд до 1000, в виде строки я сделал, а как массивом это сделать не знаю, подскажите, пожалуйста, если можно пример кода, заранее благодарен. Чуть не забыл, для tasm надо
from dark to light)

Последний раз редактировалось Алексей_2012; 21.01.2013 в 15:12.
Алексей_2012 вне форума Ответить с цитированием
Старый 21.01.2013, 15:35   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

можно попробовать режим ideal и макрокомандой:
Код:
A = 1
mass label word
rept 1000
 dw A
 A = A + 1
endm
или объявить массив и кодом его заполнить:

Код:
mass dw ?
...
mov cx, 1000
mov ax, 1
lea di, mass
rep stosw
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 21.01.2013, 20:11   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

а что такое rep stosw?

А через дерективу Db инициализировать не получится? И как кодом заполнить, объясните подробнее пожалуйста

вот мой пример кода, это все что я смог, а надо чтобы автоматически, при запуске ехе-файла появились цифры: 3, 6, 9,12, 15 и тд до 1000 которые делятся на 3
Код:
code segment para public 'code'
assume cs:code,ds:code,ss:code,es:code
org 100h
mov dx,code
mov ds,dx
mov ss,dx
mov es,dx

jmp m100
par1 label byte
max1 db 100
rd1 db ?
Str1 db 101 dup(?)
m100:mov ah,10
lea dx,par1
int 21h
lea si,str1
mov cx,0
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
mov cl,rd1
m5:mov ah,0
mov bx,0
mov dx,0
mov al,[si]
sub al, 30h
mov bl,3
div bx
cmp dl,0
je m1
jmp m2
m1: mov ah,2
mov dl,[si]
int 21h
m2:inc si
loop m5


mov ah,1
int 21h
mov ah, 4ch
int 21h
code ends
end
переделайте мой код, пожалуйста, как надо в задании

помогите, пожалуйста, другое решение в голову не лезет, тут в строку вводятся символы с клавиатуры, каждый символ делится на 3 и выводится только то, что делится на 3 без остатка, а мне надо чтобы при запуске исполняемого модуля сразу выводились число: 3, 6, 9, 12, 15,....,999. Спасибо))))))
from dark to light)

Последний раз редактировалось Stilet; 27.08.2015 в 08:57.
Алексей_2012 вне форума Ответить с цитированием
Старый 24.01.2013, 13:24   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
А через дерективу Db инициализировать не получится?
а каким образом вы собрались в байт поместить значение 789, например?

напишу чуть больше кода:

Код:
  jmp begin

  mass dw 1000 dup (?)

begin:
; заполняем массив
  lea di, mass
  mov cx, 1000
  mov ax, 1
cyc:
  stosw
  inc ax
  loop cyc
;проверка на делимость
  lea di, mass
  mov cx, 1000
  mov bl, 3
cyc1:
  lodsw
  mov dx,ax
  div bl
  cmp ah, 0   
  jne to_next
;вот сюда вставить вывод исходного числа (находится в dx)
to_next:
  loop cyc1
p.s. а вы с такими знаниями планируете заниматься ассемблером?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 24.01.2013, 15:58   #5
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Код:
jmp begin

  mass dw 1000 dup (?)

begin:
; заполняем массив
  lea di, mass
  mov cx, 1000
  mov ax, 1
cyc:
  stosw
  inc ax
  loop cyc
;проверка на делимость
  lea di, mass
  mov cx, 1000
  mov bl, 3
cyc1:
  lodsw                         ; на что указывает si ? 
  mov dx,ax
  div bl                          ; рано или поздно получаем переполнение деления
  cmp ah, 0   
  jne to_next
;вот сюда вставить вывод исходного числа (находится в dx)
to_next:
  loop cyc1
И зачем делить вообще? Начать вывод с тройки. Увеличивать выводимое значение с каждым шагом на три до 999.
vadimych вне форума Ответить с цитированием
Старый 24.01.2013, 17:02   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

И зачем делить вообще? Начать вывод с тройки. Увеличивать выводимое значение с каждым шагом на три до 999.[/QUOTE]

тогда зачем вообще заполнять массив?)

я сторонник правильного подхода: вдруг появится между поиском и проверкой какое-нить действие с массивом...

Цитата:
lodsw ; на что указывает si ?
проглядел, что там si нужно заполнить, а не di

Цитата:
div bl ; рано или поздно получаем переполнение деления
главное, чтобы остаток посчитало.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 24.01.2013, 17:23   #7
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
главное, чтобы остаток посчитало.
Сто пудов считать будет. Но не долго.
vadimych вне форума Ответить с цитированием
Старый 24.01.2013, 18:28   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Цитата:
;вот сюда вставить вывод исходного числа (находится в dx)
дело в том что в программе выложенной в следующем сообщении я тоже не могу вывести числа начиная с 10(((( хотя от 3 до 9 выводит нормально, научите выводить числа большее чем от 0 до 9) и DiemonStar, спасибо вам за код, но напишите пожалуйста всю программу, иначе я сам с ассемблером никогда не разбирусь, а в гугл сунуться-дак ничего не пойму, уже пытался

кстати можно и так, но тут тоже не оч получается(((

Код:
code segment para public 'code'
Assume CS:code, DS:code, SS:code, ES:code
org 100h
mov dx,code
mov ds,dx
mov ss,dx
mov es,dx



mov si,1
mov cx,333
m1:
mov ax,0
mov al,3
mul si
mov ah,2
mov dl,al
add dl,30h
int 21h
mov ah,2
mov dl,' '
int 21h
inc si
loop m1



mov ah,1
int 21h
mov ah,4ch
int 21h
code ends
end
Цитата:
p.s. а вы с такими знаниями планируете заниматься ассемблером?
я делфист, а ассемблером заниматься не планирую, это в качестве проверки знания этого языка (т.к в курс колледжа ассемблер тоже входит, а практику прохожу по языкам программирования изученными в колледже) будут проверятся делфи, ассемблер и паскаль

ну дак что? будут еще какие-нибудь предложения?
from dark to light)

Последний раз редактировалось Stilet; 27.08.2015 в 08:58.
Алексей_2012 вне форума Ответить с цитированием
Старый 25.01.2013, 16:43   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Если честно, меня ломает писать код полностью - в таких задачах нет ничего нового. И так уже практически все написал) тем более, что нужно искать компилятор и долбагер для отладки...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.01.2013, 21:42   #10
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

во вложении есть компилятор, линковщик и сама прога с моим вариантом вывода чисел, исправьте вывод, пожалуйста
Вложения
Тип файла: rar испольняемый модуль, тасм и тлинк.rar (116.4 Кб, 9 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать типизированный файл n действительных чисел. technomaster Помощь студентам 13 10.03.2012 13:05
преобразовать массив действительных чисел Olka_a Помощь студентам 7 29.12.2011 14:55
преобразовать массив действительных чисел Olka_a Помощь студентам 2 29.12.2011 02:40
Матрицы действительных чисел. Паскаль. zmey1 Паскаль, Turbo Pascal, PascalABC.NET 10 17.11.2011 14:20