;:=============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
Вывод Hello World
Не получается вывести 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
по умолчанию пользуется org 100h
проверь во что ты компилиш . в .com или в .exe ?
судя по коду в екзешник . для сома должно быть .model tiny .
Цитата:
Originally posted by ArtemESC
mov ax, @data
mov ds, ax
mov ax, @data
mov ds, ax
замени на :
mov ax,cs
mov ds,ax
Цитата:
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
Доброго времени суток...
Не получается вывести 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 - это тебе не в
сях постинкремент и преинкремент делать...
Цитата:
Originally posted by koderAlex
binарник должен начинаться с org 0h
по умолчанию пользуется org 100h
проверь во что ты компилиш . в .com или в .exe ?
судя по коду в екзешник . для сома должно быть .model tiny .
binарник должен начинаться с org 0h
по умолчанию пользуется org 100h
проверь во что ты компилиш . в .com или в .exe ?
судя по коду в екзешник . для сома должно быть .model tiny .
.model small - тут не com, на код и на данные приходится по отдельному сегменту.
Цитата:
Originally posted by k3Eahn
.model small - тут не com, на код и на данные приходится по отдельному сегменту.
.model small - тут не com, на код и на данные приходится по отдельному сегменту.
в загрузочном бине ? :) и кто ему сегментные регистры настроил ? :) биос ?:D
Исшо адын мамент - чтобы работать со стеком, неплохо бы его иметь...
Цитата:
Originally posted by koderAlex
в загрузочном бине ? :) и кто ему сегментные регистры настроил ? :) биос ?:D
в загрузочном бине ? :) и кто ему сегментные регистры настроил ? :) биос ?:D
Кхе, кхе...Что-то я в посте автора ни слова не видел о загрузочном секторе(бинарнике) :) .
А может быть он (автор) запускает прогу из pure DOS... Подумайте об этом...;)
Цитата:
Originally posted by k3Eahn
Кхе, кхе...Что-то я в посте автора ни слова не видел о загрузочном секторе(бинарнике) :) .
А может быть он (автор) запускает прогу из pure DOS... Подумайте об этом...;)
Кхе, кхе...Что-то я в посте автора ни слова не видел о загрузочном секторе(бинарнике) :) .
А может быть он (автор) запускает прогу из pure DOS... Подумайте об этом...;)
Цитата:
Originally posted by ArtemESC
Доброго времени суток...
Не получается вывести Hello World,
с загрузочный дискеты,...
Доброго времени суток...
Не получается вывести Hello World,
с загрузочный дискеты,...