ЗОДАЧА для 580ВМ80:)

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Post by shoorick »

Lavr wrote:Это был музыкальный автомобильный клаксон - 580ВМ80, ПЗУ два мощных транзистора и динамик. Блин - классика минимализма
ага, по ЧТ садишь ШД на землю и получаешь 16-разрядный счетчик с тремя питаниями дл перебора нот из ПЗУ :)
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

У меня в итоге получилось вот что.
Сигнатуру 0AA55H я взял чисто для примера.
Можно выбрать её другую, можно выбрать её
длиннее, но тогда будет длиннее сканер.
Тем не менее, алгоритм, предложенный Шуриком,
Р А Б О Т А Е Т ! ! !

Code: Select all

;      ZODACHA    ;
  ORG  XXXXH

  LXI    H,0000H; чистим HL
  DAD    SP;      текущий стек
  PUSH   H;       получим в HL и
  POP    B;       сохраним в BC

  LXI    D,76E9H; запишем
  PUSH   D;       в стек
  LXI    D,3933H; сканер
  PUSH   D;       сигнатуры 0AA55H,
  LXI    H,0FFF4H;вычисляя
  DAD    B;       абсолютный адрес M1
  PUSH   H;       в цикле
  LXI    D,0C2B5H;поиска
  PUSH   D;       сигнатуры
  LXI    D,7C3BH; в памяти
  PUSH   D
  LXI    D,19E1H
  PUSH   D
  LXI    D,0000H
  PUSH   D
  LXI    D,3100H
  PUSH   D
  LXI    D,0AA56H; = -(55AAH)
  LXI    H,0000H
  DAD    SP
  PCHL         ; переход на сканер
               ; сигнатуры в стеке

  DB  0AAH, 55H; сигнатура
M0:            ; искомый адрес.
  MOV  D,H     ; сохраним адрес
  MOV  E,L     ; не используя стек.
  MOV  H,B     ; восстановим
  MOV  L,C     ; старый
  SPHL         ; стек.
  MOV  H,D     ; к текущему
  MOV  L,E     ; адресу
  LXI  D,OFFSET; прибавим смещение
  DAD  D       ; к ПП корректировки переходов.
  PCHL         ; перейдём к ней
;  ...
; |
;OFFSET:
; |
;  ...
CorTab:        ; ПП корректировки переходов.
  ...
  ...

Code: Select all

;------- ПОДПРОГРАММА СКАНЕРА СИГНАТУРЫ В СТЕКЕ ---------
  NOP            ; <--- SP после загрузки сканера
  LXI    SP,0000H; укажем начало карты памяти
M1:
  POP    H       ; берём в HL два байта
  DAD    D       ; вычитаем 55AAH
  DCX    SP      ; но стек надо сдвинуть только на 1 байт
  MOV    A,H     ; проверяем
  ORA    L       ; HL=0000H ?
  JNZ    M1      ; если нет - продолжим поиск
  INX    SP      ; исправим искомый адрес от DCX SP
  DAD    SP      ; занесём его в HL
  PCHL           ; переход на адрес после сигнатуры 0AA55H
  HLT; просто выравнивает загрузку в стек
;             <--- SP изначально ------------------------
NOP в начале и HLT в конце просто выравнивают загрузку в стек
по два байта через PUSH ..., чтобы удобно попасть в адреса

На мой взгляд - всё достаточно кратко и элегантно..
Что ж зодачу, которой в ближайший обед примерно 20 лет, мы с вами, уважаемые коллеги, РАСКОЛОЛИ !!! :D
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ухты! Таки полетела... :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:Ухты! Таки полетела...
Ну дык!!!
Это только изнасиловать женьщину на площади советчики мешают. ("лопата")
А в программировании они вносят свежий взгляд. ("не лопата, а, скажем, кайло") :wink:
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ну чтож ты прицепился к этой лопате :)

Я в 1993 году в тетрадочке писал в кодах 580-го проца подпрограммы передачи управления в перемещаемой программе - которая без таблицы, просто перемещаемая (в которой совсем не используются абсолютные адреса). Единственное ограничение - адрес входа в подпрограмму передачи управления должен быть фиксированным, а тут предложен вариант как найти эту подпрограмму не зная адреса. Теперь у нас всё есть, чтобы писать перемещаемые вирусы для процессора 8080 :kruto:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

замечание

Post by Lavr »

Выспавшись и критически взглянув на это творение, я хочу сделать одно
веское замечание. Я писал всё это на эмуле "Специалиста", а "Спец" априори
не имеет прерываний. Чтобы метод был более универсальным и ввиду того,
что мы активно манипулируем стеком, следует критическую часть от начала
программы и до восстановления стека, обрамить парой DI ... EI.
Иначе первое же прерывание всё наше "чюдо в стеке" изгадит.

Возможно, для уверенного опознавания надо взять сигнатуру - в 4 байта.
Сканер это не сильно усложнит.

PS.
Shaos wrote:Ну чтож ты прицепился к этой лопате
Ну я человек конструктивный и заметил, что шутки, к которым
я привык в окружении своих друзей, здесь порой вызывают непонимание
и даже обиду. И это правильно, что ты подсказал тег "лопата", теперь
я им буду щютки обрамлять:

Code: Select all

"лопата"
...щютка
"/лопата"
Никто ж не обязан знать чюжих привычных щюток.
Вот если ко мне приходит в гости кто-то из друзей, я говорю:
"Граф, кофию-с не желаете-с?" и мы оба улыбаемся, поскольку
знаем этот дремучий анекдот. А у других это вряд ли поколеблет
чувство юмора. Но юмор я люблю - так что лопата - к месту.
:lol:

PPS. Я спросил... у Гугеля... "где моя любимая?" - да фиг тааам!!!
Я спросил - знает ли Гугель анекдот "Граф, кофию-с не желаете-с?"
Знает!!!

http://stories.live4fun.ru/last/joke/53161
Но как анекдоты со временем портятся и опошляются... :oops:
Last edited by Lavr on 03 Feb 2011 09:20, edited 2 times in total.
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ну в наших уральских краях "лопата" - это тоже был дремучий детский анекдот...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Shaos wrote:Ну в наших уральских краях "лопата" - это тоже был дремучий детский анекдот...
Ну и в казаше тоже. Я еще в школу ходил, с ранцем. :3
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: ЛОПАТА для 580ВМ80:)

Post by Lavr »

Канадские первоклассники рисовали на уроке на тему «Кем я хочу быть, когда вырасту».
Рисунок одной девочки (текст на рисунке переводится так: «Когда я вырасту, я хочу быть
как мама
») вызвал бурную реакцию учительницы...
Lopata.jpg
На следующий день девочка принесла учительнице записку от мамы:
г-жа Харрингтон wrote:Дорогая г-жа Дэвис!
Я хочу объяснить, что именно изображено на рисунке моей дочери. Это не я, танцующая стриптиз на шесте!
Я работаю в строительном магазине и как-то раз рассказала своей дочери, сколько денег мы заработали во время
последнего бурана. На рисунке я продаю ЛОПАТУ!
You do not have the required permissions to view the files attached to this post.
iLavr