Важная информация

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Азбука ассемблера

  1. #11
    Master Аватар для SaNchez
    Регистрация
    22.12.2007
    Адрес
    г. Владивосток
    Сообщений
    915
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    6 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    А откуда вообще такой упор на DEFW ?
    По сути это просто вид представления данных - в данном случае - машинное слово (DEFine Word).
    Те-же данные можно задать и байтами (DEFine Byte)
    Да хоть и DEFM.
    Компу пофик что ты там на DEFинил - это ведь инструкция для компилятора (в каком виде данные ложить), а процессор всё равно воспринимает всю кухню как толпы нулей и единиц...
    Вот я про то и говорю: читать до просветления

  2. #12
    Member
    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    165
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да просто удобно... Так, скажем в DEFB удобно забивать 8-байтные шаблоны, для последующего вывода на экран. DEFM, это вывод строк. А DEFW - двухбайтное слово. В моем случае адрес. Я, конечно, рад за тех, кто легко может всю программу набить на DEFB или DEFM... А я хочу чтобы мне мой код понятен был. Сказано, DEFW для двухбайтных слов, значит так и есть. Т.е. смотрю на свои записки 3-недельной давности, так я даже без вспоминания того, зачем писалась программа, легко вижу где какой блок данных... А если все будет состоять из DEFB/DEFM... Да там сам черт ногу сломит и никакие комментарии не спасут...
    Имхо, что написано, то и должно быть. Ну за исключением случаев, когда критична скорость выполнения программы. Мало ли, может кому-то придется еще мою программу читать (маловероятно конечно, но все-таки)...
    Это как в библиотеке, можно книги все вперемешку хранить, но, как-то предпочитают сортировать: журналы отдельно, книги отдельно, многотомные сборники отдельно...
    Во всем должен быть порядок.

  3. #13
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Zidane, это всё известно и понятно
    Я имел в виду как так случилось что ты понимаешь как общатся с DEFB, и не догадался как быть с DEFW ?
    Потому и спросил - почему так? (может какой-то частный, особый случай, что не подходят очевидные методы - ну например два INC adr)

    Вот я например сейчас мучаюсь с 3D (raycasting) - а там нужно задавать три байта на каждый луч. Вот и ломаю голову как будет лучше - один DB + один DW или просто три DB.
    А возможно - два DW...
    Такой вот частный случай и хз как лучше это всё хранить/выбирать
    Последний раз редактировалось Destr; 02.11.2012 в 23:27.

  4. #14
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    144
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    А если все будет состоять из DEFB/DEFM... Да там сам черт ногу сломит и никакие комментарии не спасут...
    Речь не об этом.
    Речь о том, что в памяти что DEFB, что DEFW, что DEFM хранятся одинаково. И поэтому непонятно, почему вы ждете, что для работы с DEFB предусмотрены одни команды, а с DEFW другие. Все эти типы существуют только на уровне ассемблера, процессор про них и знать не знает. Да, через DEFW можно определять адреса. Но это лишь свойство, а не предназначение.

    Адрес - это всего лишь 2 байта, которые хранятся в памяти задом наперед. Читаются из памяти точно так же, как и одиночные байты,
    LD HL, IMG
    LD E, (HL)
    E потому что, напоминаю, адрес лежит задом наперед. Грузим старший
    INC HL
    LD D, (HL)
    Все, адрес в DE. Берем значение, которое лежит по этому адресу, и делаем с ним что хотим:
    LD A, (DE)
    Если все сделали, переходим к следующему элементу (младшему байту следующего адреса) - INC HL, JP ....

    Ну и все, получили тот же код, который SAM style написал еще во втором сообщении.
    Читать память сразу словами через переустановку стека и POP - это красиво, но это хак. Хотя асм, конечно, такой язык, что там практически все - хак
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  5. #15
    Member
    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    165
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Первая Матрица была написана на бейсике

    Однозначно. В общем, пишу разного рода программки на бейсике и перевожу в ассемблер. Со временем сейчас несколько напряг, но полчасика в день выковыриваю... Суть вопроса вот в чем. Написал на бейсике махонькую демку (даже и на махонькую с трудом тянет, меня больше волновала реализация алгоритма) но все же. Файлик прилагается. Основная проблема в том, что нужно генерить рандомные числа в заданном диапазоне (строки 220-290). Вот тут я собственно и встал... Инфу раскопал и вроде даже работает... Но все же хотел бы узнать, кто как генерит эти числа для личных нужд? ) Или все пользуются одним приемом? В общем, собираю полезные идеи, если кому не жаль поделиться.
    Вложения Вложения
    • Тип файла: zip MATRIX.zip (3.0 Кб, Просмотров: 108)

  6. #16
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Зависит от того, насколько быстро и насколько случайно тебе это надо. На спеке источниками энтропии могут быть либо R, либо число прерываний до запуска программы, где-то бейсик его считает. А потом уже каким-либо ГСЧ.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, как-то так:
    Код:
    RANDOM	push hl
    ADDR	ld hl,0
    	inc l
    	ld (ADDR+1),hl
    	ld a,r
    	xor (hl)
    	pop hl
    	ret
    
    START	...
    	call RANDOM
    	and 15			;тут в А будет число от 0 до 15
    	...
    	call RANDOM
    	and 31			;а тут - от 0 до 31
    	...
    Способов несколько. Основной - брать R и XOR-AND-OR-ADD-SUB-ИТД его со всем, что попадется под руку.
    Последний раз редактировалось SAM style; 10.11.2012 в 20:14.
    Все любят гипножабу

  9. #18
    Veteran
    Регистрация
    08.01.2007
    Адрес
    г. Красноярск
    Сообщений
    1,262
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    1,405
    Поблагодарили
    277 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тема о генераторах случайных чисел с примерами: http://zx.pk.ru/showthread.php?t=13188

  10. #19
    Master
    Регистрация
    25.05.2007
    Адрес
    Киржач, Владимирская обл.
    Сообщений
    616
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question

    Подскажите пожалуйста, как исправить ошибку?
    Делаю, чтобы был вывод по одной букве. Но никак не выходит.
    Код:
              LD   D,10
    L1        LD   HL,(NUM)
              LD   A,(HL)
              RST   #10
              INC   HL
              LD    (NUM),HL
    
              DEC    D
              JR     NZ,L1
              RET
    
    NUM      DEFB    $+1
    TEXT     DEFB   "prosto text"
    Что то с NUM не так...

    И еще вопрос как в Alasm сделать, чтобы текст(строка TEXT) располагался с определенного адреса, например с 50000?

  11. #20
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,774
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    DEFB резервирует один байт. когда та берёшь число оттуда захватывается первая буква текста. скорее надо defw (два байта) или defb 1,0
    Последний раз редактировалось goodboy; 11.06.2013 в 19:25.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Комманды ассемблера/коды i8080/КР580ВМ80А
    от sergey2b в разделе Разное
    Ответов: 4
    Последнее: 29.11.2015, 14:01
  2. Ответов: 10
    Последнее: 06.03.2015, 12:59
  3. (Обмен) У. МОРЕР. Язык ассемблера для ПК ЭПЛ
    от shapipovo в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 30.08.2011, 22:06
  4. Ответов: 12
    Последнее: 24.06.2009, 12:33
  5. листинг ассемблера z80 в фильме }{0Тт@БЬ)Ч
    от daniel в разделе Разный софт
    Ответов: 6
    Последнее: 11.02.2008, 23:19

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •