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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2013, 05:34   #21
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Алексей_2012, не за что. Вы бы задание своё уточнили. И список команд, которые можно использовать приложили.

Последний раз редактировалось vadimych; 07.02.2013 в 06:40.
vadimych вне форума Ответить с цитированием
Старый 07.02.2013, 17:28   #22
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Хорошо, уточняю:
1) задание: массив действительных чисел от 1 до 1000 делящиеся на 3 без остатка используя счетчик (i=i+1, т.е если число не делится, то наращивается на 1 и проверяется)
2) разработать программу в которой используются не более 16-20 команд
3) допустимые команды:
Код:
pop, push, mul, div, mov, add, sub, shl, shr, cmp, loop (je,jne,jg,jl,jle,jge), jmp, inc, dec 
прерывания: int 21h, int 10h
так то все, ну еще можно использовать команды ввода или вывода символа или строки, главное уложится в 16-20 строк
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 07.02.2013, 17:32   #23
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Цитата:
главное уложится в 16-20 строк
Ну что ж, дерзайте.
vadimych вне форума Ответить с цитированием
Старый 07.02.2013, 18:16   #24
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

я пытаюсь, сегодня выложу код переделанный, может его больше оптимизировать можно

Код:
.data
buffer dw 1000 dup (?)

.code
start:

mov ax,@data
mov ds,ax

mov di,offset buffer
mov si,di
add si,4
объясните вот эти строчки, пожалуйста
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 07.02.2013, 19:20   #25
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
.data
buffer dw 1000 dup (?)

.code
start:

mov ax,@data; заносим в AX адрес сегмента данных
mov ds,ax; заносим в сегментный регистр DS содержимое AX(т.е по сути адрес сегмента данных)

mov di,offset buffer; заносим в регистр DI адрес buffer (объявлено в сегменте данных)
mov si,di; заносим в регистр SI содержимое регистра DI
add si,4; прибавляем к содержимому регистра SI 4
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 07.02.2013, 22:54   #26
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
mov di,offset buffer; а как сделать не используя offset?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 07.02.2013, 23:08   #27
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Код:
@3:
mov [di],ax
add di,2; почему увеличиваем позицию в массиве на 2,а не на 1? (если правильно понял, то di-это регистр куда инициализировался массив)
inc ax
loop @3
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 08.02.2013, 00:49   #28
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Алексей_2012,
Цитата:
mov di,offset buffer; а как сделать не используя offset?
Например вот так:

Цитата:
lea DI, buffer
Цитата:
почему увеличиваем позицию в массиве на 2,а не на 1? (если правильно понял, то di-это регистр куда инициализировался массив)
Т.к массив у вас не из байт(db) - а из слов (dw). Слово = 2 байта.

Пусть в регистре AX у нас 1234, а в DI 0000. Тогда в памяти у нас должно быть вот что:

0000: 3412
0002: 3412
0004: 3412
0006: 3412
...............

Если бы при проходе прибавляли 1 - то следующие данные мы положили наложили на предыдущие.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 08.02.2013 в 01:03.
kventin_zhuk вне форума Ответить с цитированием
Старый 08.02.2013, 01:03   #29
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо) но я с этим сам нагуглил, а вот смотрел в интернете про .data, так и не понял для чего она нужна и можно ли обойтись без нее, например вот так:

Код:
jmp m100
buffer dw 1000 dup (?)
m100:
в самой программе

Код:
mov si,di
add si,4
а для чего к si прибавлять 4?
from dark to light)

Последний раз редактировалось Алексей_2012; 08.02.2013 в 01:08.
Алексей_2012 вне форума Ответить с цитированием
Старый 08.02.2013, 01:25   #30
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Алексей_2012,
Это сегмент данных. Там описывают данные. Есть сегмент кода - там должен находиться код, по сути код это тоже данные, но другого предназначения. Вообще можно описывать данные и в сегменте кода - ошибкой компиляции не будет - но программа врядли будет работать корректно. Придерживайтесь разделения по сегментам.

Точно не помню. Здесь думаю не нужно. Вот когда мы буфер объявляем без размера - допустим как "12312321fsdfdsf" - то первый символ там - длина буфера, второй что-то ещё.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 08.02.2013 в 01:33.
kventin_zhuk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимизировать код destic Microsoft Office Excel 14 26.01.2013 01:12
Оптимизировать код strannick Microsoft Office Excel 9 14.11.2012 00:59
Оптимизировать код) Pein95 Паскаль, Turbo Pascal, PascalABC.NET 1 11.11.2011 18:42
Оптимизировать код. Манжосов Денис :) Общие вопросы Delphi 1 20.10.2008 19:06
Оптимизировать код NeiL Помощь студентам 2 21.02.2008 08:57