Heresy
#01
16 мая 1999 |
|
PC ASM - ассемблер для X86.
███████████████████▄ ▄▄█████████████████▄ █████████ ▀████████▄ ████████▀ ▀██ █████████ █████████ ███████▀ █████████ █████████ ███████ ▄▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄▄▄ █████████ ▄████████▀ ███████ ▐▄▄▄▄▄█ ▐▄▄▄▄▄▄ ▐ ▌ █ ███████████████████▀ ████████ ▐ ▀ ▄▄▄▄▄▄▀ ▐ ▌ █ █████████ █████████▄ █████████ █████████▄ ▄██ █████████ а$h ▀▀█████████████████▀ В шестом Born Dead'e появилась статья о программировании на 68000, то бишь на Амиге. Не знаю, интересно ли это было кому-то, но возникла мысль: а ПЦ ? :) Ведь гораздо больше народу юзает вместе со Спекки именно РС. И довольно часто возникает необходимость написания небольшой утилитки на РС для перекидывания чего-либо для Спекки, либо конвертирования, ну или просто fuck кому послать надо ;). Короче, я в этом деле чайник, но что буду узнавать тем и буду делиться ;). Я не буду начищать вам мозги насчет регистров и команд, так как это есть в любом справочнике. А вот то, что я в справочниках не нашел, то, что мне пришлось выискивать Insight'om в exe'шниках или консультироваться у Dark Lion'a и тому подобное - этим я с вами поделюсь. ─────────────────────────────────────── 1. Заглушка для "клавы" - отрубает опрос клавиатуры (включая Ctrl-Break и Ctrl-Alt-Del ;) ;глушим in al,21h mov [varib],al or al,2 out 21h,al ... ;ваша программа ;и перед выходом ;восстанавливаем mov al,[varib] out 21h,al varib db 0 ─────────────────────────────────────── 2. Печать сообщения - ну это вроде самое простое, но вдуг кто не знает :) mov dx,OFFSET text mov ah,9h int 21h text db "Speccy was here :)",Odh,Oah,"$" ;кода Odh и Oah называются CR+LF ;(возврат каретки и перевод строки) ;они ставятся дабы следующее сообщение ;печаталось с новой строки, ;знак доллара означает конец сообщения ($=24h) ─────────────────────────────────────── 3. Опрос any key если клава отрублена процедурой 1., то естественно ничего у вас не получиться no_key: mov ah,1 int 16h jz no_key ... ─────────────────────────────────────── 4. Опрос клавиши esc no_esc: in al,60h cmp al,1 jnz no_esc ... ─────────────────────────────────────── 5.Выход в Дос (можно конечно короче, но для начала сойдет) mov ah,Чch int 21h ─────────────────────────────────────── Небольшое разъяснение. В отличии от z80 на ПЦ принято писать числа в - hex-формате с "h" на конце (пример:21h), прибавляя ноль вначале, если число начинается с буквы (пр.:Oah) - двоичном формате добавляют "b" на конце (пр.:00001111b) ─────────────────────────────────────── Теперь из этих процедур можно попробовать склепать вашу первую программу: (обратите внимание - метки ставятся с двоеточием, за исключением data-меток). ;--- Your first PC programm ;) --- .model tiny .code org 100h ;com-файл начинается ;c адреса 256 start: mov dx,OFFSET text mov ah,9h int 21h no_esc: in al,60h cmp al,1 jnz no_esc mov ah,Чch int 21h text db "Speccy was here :)",Oah,Odh,"$" end start ;-------------------------------------------- Все это набивается в любом редакторе (очень удобен для этого встроеный в Dos Navigator), затем списывается на диск, в файл с расширением, к примеру, first.asm Теперь, если у вас есть ассемблер, можно откомпилить в com-файл. Через коммандную строку задаем: tasmx /m2 first.asm и получаем объектный файл first.obj, линкуем его в .com: tlink /t /x first.obj и лицезреем новый файл first.com - запускайте! Знаю, что для многих все вышеперечисленное уже давным-давно известно. Просьба к таким людям поделиться с народом своими знаниями, наработками, полезными процедурами и т.п.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября