masm

5 отговора 153 прегледа
#1

masm

kak da kompiliram tazi chudesia:

.model tiny

.data
HelloMessage db 13,10,'Hello World !',13,10,'$'

.code
org 100h
start:
mov ax,@data
mov ds,ax
mov ax,3
int 10h
mov ah,9
mov dx,offset HelloMessage
int 21h
xor ax,ax
int 16h
mov ax,3
int 10h
mov ah,4ch
int 21h
end start

--------
greshkata e pri
mov ax, @data

dava mi greshka: error A2006: undefined symbol : DGROUP

izpolzvam assembler:

D:\masm32\bin>ml /c /coff t2.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Отговор
в отговор на nickita #2

Re: masm

ami, ocevidno pises .COM fail, v tozi slucai voobst ene e nujno da zarejdas DS sas segmenta za danni.
t.e. parvite 2 instrukcii sa izlisni.

Отговор
в отговор на nickita #3

Re: masm

Znachi: programata ti zapochva s direktivata ".model tiny", koyato opredelya modela na pametta. Tova e modela za dosovski com fail. V tozi model imash samo edin obsht segment za kod i danni. Sled tova obache s direktivite ".data" i ".code" deklarirash dva otdelni segmenta za kod i za danni. Predpolagam, che ot deklariraneto na segmenta za danni idva simvolut DGROUP. Po-tochno, ako ne gresha, tova e edin subiratelen segment za danni, v koito assemblera subirra vsichki segmenti za danni deklarirani vuv vsichki failove, koito se izpolzvat za kompilirane na programata. Mislya, che tova povedenie na asemblera moje da se vklyuchva i izklyuchva s nyakakva opciya.
Po-natatuk, v nachaloto na segmenta za kod .code izpolzvash i direktivata org 100h, koyato kazva che nachalnoto otmestvane na programata ti e 100h, koeto e zaduljitelno iziskvane za com failovete. Taka che ochevidno naistina pishesh com fail.
Izvodut: imash dve vuzmojnosti. Ednata e da promenish modela na programata za da se kompilira kato exe. Drugata e da ya napisesh kato tipichen com fail: t.e. bez segment za danni i s vsichki danni razpolojeni ili sled koda ili sled edna instrukciya jmp, koyato gi preskacha:

.code
org 100h
start:
jmp CodeStart
HelloMessage db 13,10,'Hello World !',13,10,'$'
CodeStart:
...

A eto kak bi mogla da izglejda cyalata ti programa s dannite sled koda:

.model tiny

.code
org 100h
start:
push cs
pop ds
; Purvite dve instrukcii vsushtnost sa izlishni, zashtoto kogato operacionnata
; sistema zarejda com fail za izpulnenie inicializira ds da sochi kum kodoviya
; segment, no nishto ne prechi da se prezastrahovash.
mov ax,3
int 10h
mov ah,9
mov dx,offset HelloMessage
int 21h
xor ax,ax
int 16h
mov ax,3
int 10h
mov ah,4ch
int 21h

HelloMessage db 13,10,'Hello World !',13,10,'$'

end start

Отговор
в отговор на nickita #4

Бравос!

Другари!,

Скоро и на Асемблер ще се научим!!!!


Ама ще е къснооооооооооооо

Аз съм!
Отговор
в отговор на a3 #5

Re: Бравос!

nikoga ne e kasno covek da nauci assembler!

Отговор
в отговор на CALL-151 #6

Хмммммм

Абе научиш ли веднъж VB няма спасение
След него всичко изглежда сложно.

Аз съм!
Отговор