@from__another__planet

«Hello World» на машинном коде?

Программа «Hello, world!» для процессора архитектуры x86 (ОС DOS, вывод при помощи BIOS Int 10h (англ.) выглядит следующим образом (в шестнадцатеричном представлении побайтно):
BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21

Как запустить такую программу?
Скачала hex-редактор fileinsight.
Сохраняю в формате .com, пыталась запустить в DosBox - виснет
Помогите, пожалуйста:)
  • Вопрос задан
  • 575 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как запустить такую программу?

Сохранить в файл с расширением .com, запустить в DosBox

Сохраняю в формате .com, пыталась запустить в DosBox - виснет

Сделал то же самое,
работает.
58e1b24bb3ee46a390e305568c9d2a18.png
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
Может не поддерживается 16 код...
CODE
seg000:0100 ; Base Address: 1000h Range: 10100h-1011Fh Loaded length: 1Fh
seg000:0100
seg000:0100                 .686p
seg000:0100                 .mmx
seg000:0100                 .model tiny
seg000:0100
seg000:0100 ; ===========================================================================
seg000:0100
seg000:0100 ; Segment type: Pure code
seg000:0100 seg000          segment byte public 'CODE' use16
seg000:0100                 assume cs:seg000
seg000:0100                 org 100h
seg000:0100                 assume es:nothing, ss:nothing, ds:seg000, fs:nothing, gs:nothing
seg000:0100
seg000:0100 ; =============== S U B R O U T I N E =======================================
seg000:0100
seg000:0100 ; Attributes: noreturn
seg000:0100
seg000:0100                 public start
seg000:0100 start           proc near
seg000:0100                 mov     bx, 111h
seg000:0103                 mov     cx, 0Dh
seg000:0106                 mov     ah, 0Eh
seg000:0108
seg000:0108 loc_10108:                              ; CODE XREF: start+Dj
seg000:0108                 mov     al, [bx]
seg000:010A                 inc     bx
seg000:010B                 int     10h             ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
seg000:010B                                         ; AL = character, BH = display page (alpha modes)
seg000:010B                                         ; BL = foreground color (graphics modes)
seg000:010D                 loop    loc_10108
seg000:010F                 int     20h             ; DOS - PROGRAM TERMINATION
seg000:010F start           endp                    ; returns to DOS--identical to INT 21/AH=00h
seg000:010F
seg000:010F ; ---------------------------------------------------------------------------
seg000:0111 aHelloWorld     db 'Hello, World!',0
seg000:0111 seg000          ends
seg000:0111
seg000:0111
seg000:0111                 end start
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы