машинный код для DOS системы
У меня есть машинный код, меня интересует, как его запустить и проверить, код системы dos, в каком расширении он должен быть?
b8 21 0a 00 00
a3 0c 10 00 06
b8 6f 72 6c 64
a3 08 10 00 06
b8 6f 2c 20 57
a3 04 10 00 06
b8 48 65 6c 6c
a3 00 10 00 06
b9 00 10 00 06
ba 10 00 00 00
bb 01 00 00 00
b8 04 00 00 00
cd 80
b8 01 00 00 00
cd 80
b8 417574686f723a2049504f6c656b73656e6b6f
Ответы (2 шт):
в каком расширении он должен быть?
Скопируйте эти значения в любой НЕХ-редактор (HxD), и сохраните с расширением "BIN". Теперь открываете этот бинарник в дизассемблере, и таким образом получаете исходник. В данном случае он представляет собой "Hello World" для линуха, т.к. в коде имеются вызовы INT-80h. В конце есть строка автора - вот результат:
File: asm.bin
Size: 89
Type: Binary
* Entry Point:
00000000: B8210A0000 mov eax, 00000A21
00000005: A30C100006 mov [0600100C], eax
0000000A: B86F726C64 mov eax, 646C726F
0000000F: A308100006 mov [06001008], eax
00000014: B86F2C2057 mov eax, 57202C6F
00000019: A304100006 mov [06001004], eax
0000001E: B848656C6C mov eax, 6C6C6548
00000023: A300100006 mov [06001000], eax
00000028: B900100006 mov ecx, 06001000
0000002D: BA10000000 mov edx, 00000010
00000032: BB01000000 mov ebx, 00000001
00000037: B804000000 mov eax, 00000004
0000003C: CD80 int 80
0000003E: B801000000 mov eax, 00000001
00000043: CD80 int 80
00000045: B841757468 Author: IPOleksenko
Примеры исходников и их опкодов для "Hello World!" DOS и Win. Скачайте отсюда FASM, и скопируйте эти исходники в его окно. Теперь нажмите F9, и на выходе получите исполняемые файлы *.com и *.exe.
Вот код для MS-DOS:
;//---------------
org 100h
jmp start
msg db 'Hello World! $'
start: mov ah,9 ;// функция AH=9 сервиса DOS int-21h (вывод строки на консоль)
mov dx,msg ;// адрес строки
int 21h ;// зовём сервис!
xor ax,ax ;// fn.AH=0 сервиса биос (ждать нажатия клавиши)
int 16h ;// сервис BIOS для работы с клавиатурой
ret ;// выход из программы.
Опкоды программы выше (скопировать в блокнот и сохранить как *.com):
EB0E48656C6C6F20576F726C64212024B409BA0201CD2131C0CD16C3
Это то-же "Hello World", только для Windows от 2К до Win10. Опкоды размером 2 КБ, поэтому не привожу.
;// for Windows
;//---------------
format pe gui
include 'win32ax.inc'
.data
msg db 'Hello World!',0
.code
start: invoke MessageBox,0,msg,0,0
invoke ExitProcess,0
.end start