Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод Hello World

11K
19 февраля 2006 года
ArtemESC
14 / / 19.02.2006
Доброго времени суток...
Не получается вывести Hello World,
с загрузочный дискеты, думаю в
следующем направлении, буду рад
любым замечаниям:

;for masm 6.11
title example for boot
.model small
.code
main proc
mov ax, @data
mov ds, ax
mov bx, offset s
mov cx, len
xor bp, bp
J:
mov al, byte ptr [bx]
push ds
mov dx, 0B800h
mov ds, dx
mov ah, 01Fh
mov [bp], ax
pop ds
inc bx
inc bp
loop J
L: jmp L
main endp
.data
s db "Hello world!!!"
len = ($ - s)
end main
252
21 февраля 2006 года
koderAlex
1.4K / / 07.09.2005
binарник должен начинаться с org 0h
по умолчанию пользуется org 100h
проверь во что ты компилиш . в .com или в .exe ?
судя по коду в екзешник . для сома должно быть .model tiny .
252
21 февраля 2006 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by ArtemESC

mov ax, @data
mov ds, ax


замени на :
mov ax,cs
mov ds,ax

1.8K
21 февраля 2006 года
k3Eahn
365 / / 19.12.2005
Цитата:
Originally posted by ArtemESC
Доброго времени суток...
Не получается вывести Hello World,
с загрузочный дискеты, думаю в
следующем направлении, буду рад
любым замечаниям:

;for masm 6.11
title example for boot
.model small
.code
main proc
mov ax, @data
mov ds, ax
mov bx, offset s
mov cx, len
xor bp, bp
J:
mov al, byte ptr [bx]
push ds
mov dx, 0B800h
mov ds, dx
mov ah, 01Fh
mov [bp], ax
pop ds
inc bx
inc bp
loop J
L: jmp L
main endp
.data
s db "Hello world!!!"
len = ($ - s)
end main


Стоит изменить inc bp на add bp,2 - это тебе не в
сях постинкремент и преинкремент делать...

1.8K
21 февраля 2006 года
k3Eahn
365 / / 19.12.2005
Цитата:
Originally posted by koderAlex
binарник должен начинаться с org 0h
по умолчанию пользуется org 100h
проверь во что ты компилиш . в .com или в .exe ?
судя по коду в екзешник . для сома должно быть .model tiny .


.model small - тут не com, на код и на данные приходится по отдельному сегменту.

252
21 февраля 2006 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by k3Eahn
.model small - тут не com, на код и на данные приходится по отдельному сегменту.


в загрузочном бине ? :) и кто ему сегментные регистры настроил ? :) биос ?:D

1.8K
21 февраля 2006 года
k3Eahn
365 / / 19.12.2005
Исшо адын мамент - чтобы работать со стеком, неплохо бы его иметь...
1.8K
21 февраля 2006 года
k3Eahn
365 / / 19.12.2005
Цитата:
Originally posted by koderAlex
в загрузочном бине ? :) и кто ему сегментные регистры настроил ? :) биос ?:D


Кхе, кхе...Что-то я в посте автора ни слова не видел о загрузочном секторе(бинарнике) :) .
А может быть он (автор) запускает прогу из pure DOS... Подумайте об этом...;)

252
22 февраля 2006 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by k3Eahn
Кхе, кхе...Что-то я в посте автора ни слова не видел о загрузочном секторе(бинарнике) :) .
А может быть он (автор) запускает прогу из pure DOS... Подумайте об этом...;)



Цитата:
Originally posted by ArtemESC

Доброго времени суток...
Не получается вывести Hello World,
с загрузочный дискеты,...

1.8K
24 февраля 2006 года
k3Eahn
365 / / 19.12.2005
Код:
;:=============HW.BAT===============
;@echo off
;set MASMPATH=c:
;goto build
DIRECTAPI=1
.386
.model flat,stdcall
option casemap:none

include windows.inc
IFNDEF DIRECTAPI
    include kernel32.inc
    include user32.inc
ELSE
    externdef _imp__MessageBoxA@16:DWORD
    MessageBox equ <_imp__MessageBoxA@16>
    externdef _imp__lstrcmpiA@8:DWORD
    lstrcmpi equ <_imp__lstrcmpiA@8>
    externdef _imp__ExitProcess@4:DWORD
    ExitProcess equ <_imp__ExitProcess@4>
ENDIF
includelib kernel32.lib
includelib user32.lib

.code
szMessage db "Равны ли строки "
szFloppy db "дискета",0
_and dw 0
szSector db "сектор",0
szNotEqual db "не "
szEqual db "равны",0
__start:
    push 0
    push saferet
    push offset szSector
    push offset szFloppy
    push check
    push lstrcmpi
    ret

check:
    cmp eax,1
    mov ecx,offset szEqual
    mov eax,'с и '
    sbb edx,edx
    mov DWORD PTR _and-1,eax
    and ecx,edx
    xor edx,-1
    and edx,offset szNotEqual
    or ecx,edx
    push MB_ICONINFORMATION
    push offset szMessage
    push ecx
    push 0
    push ExitProcess
    push MessageBox
    ret


saferet:

end __start

:build

if exist hw.obj del hw.obj
if exist hw.exe del hw.exe

%MASMPATH%\BIN\ml  /c /coff /I%MASMPATH%\include\ hw.bat
if errorlevel 1 goto errasm

%MASMPATH%\BIN\link  /SUBSYSTEM:WINDOWS /LIBPATH:%MASMPATH%\lib  /MERGE:.rdata=.text /SECTION:.text,RWE /OPT:NOWIN98 hw.obj
if errorlevel 1 goto errlink

goto TheEnd

:errlink

echo.
echo There has been an error while linking this project.
echo.
goto TheEnd

:errasm

echo.
echo There has been an error while assembling this project.
echo.
goto TheEnd

:TheEnd

pause
@echo on
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог