Jump to content

Recommended Posts

Прежде чем начать произнесите клятву вот здесь.

Дальше читают только те кто произнес клятву.

Тксс, ну начнем, для начала вам неободимо скачать следующие вещи.

TAsm - компиляатор от компании Borland (ВНИМАНИЕ!!! ссылка была изменена).

Зубков С.В. Assembler для Dos, Windows и UNIX - очень хорошая книга.

AsmEdit - IDE, потом поймете что это и с чем его едят.

Norton Commander - может понадобится.

Olly Debugger - хороший отладчик.

Instruction - инструкция по установке компилятора и IDE.

Edited by Erv&Sed
Link to post
Share on other sites

Итак теперь вроде все готово чтобы написать первую программу, ну и вот он:

.Model Tiny

.Code

Org 100h

Start: Mov Ah,9

Mov DX,OffSet Message

Int 21h

Ret

Message Db 'Hello World!',0Dh,0Ah,'$'

End Start

Скопируйте эту программу в IDE (C:\TAsm\Asmedit\ASM_Ed.exe) сохраните его в папке Prog (C:\TAsm\Prog), имя выбирайте сами и нажмите F7, после зайдите в папку Prog и включите программу [имя].com, посмотрите что появляется в консольном окне.

ВНИМАНИЕ теперь задание:

Теперь, чисто с точки зрения логики, исправьте программу так, чтобы вместо Hello World! программа выводила-бы ваш ник (на англиском, вообще по началу не стоит использовать русские буквы).

P.S. Если вы включаете программу и она быстро исчезает с экрана то:

1. Включите оболочку NC и в ней включите программу, а потом нажмите Ctrl-O, для возвращения надо нажать ту-же комбинацию клавищ.

2. Правой кнопкой мыщи нажмите на исполняемый файл ([имя].com) - свойства - программа - и снять галочку "закрыть окно по завершении работы".

Вы можете спросить как-же так никакой теории, нет описание операторов ... . Но именно поэтому я и написал что предисловии НЕ будет!!!

Ну все жду програмки и вопросы.

Link to post
Share on other sites
  • 5 weeks later...
  • 3 weeks later...

моя прога :D

Шарик крутится на верёвке (3D) при нажатии на клавиши 1,2,3 - изменяется длина нити, esc - выход

model small

.data

buffer db 64000 dup(0)

x1 dw 0

y1 dw 0

x2 dw 0

y2 dw 0

xc dw 160

yc dw 100

xr dw 50

yr dw 10

rx dw 0

ry dw 0

rrx dd 0

rry dd 0

res dd 0

xyscale dd 1.2

abscale dd 2

a dd 0

da dd 0.005

dd 64616853h,5320776Fh,7774666Fh,21657261h

.stack 256

.code

.386

Line proc

push x1

push y1

xor di,di

mov ax,y1

cmp ax,y2

jg LM1

xchg ax,y2

mov y1,ax

mov bx,x1

xchg bx,x2

mov x1,bx

LM1:

mov bx,y2

shl bx,6

add di,bx

shl bx,2

add di,bx

sub ax,y2

mov y1,ax

mov ax,x1

add di,x2

cmp ax,x2

jl LM7

sub ax,x2

mov x1,ax

cmp ax,y1

jl LM4

mov bx,x1

inc bx

mov dx,x1

shr dx,1

LM2:

mov byte ptr [di],63

inc di

add dx,y1

cmp dx,x1

jl LM3

add di,320

sub dx,x1

LM3:

dec bx

jnz LM2

jmp EXIT

LM4:

mov bx,y1

inc bx

mov dx,y1

shr dx,1

LM5:

mov byte ptr [di],63

add di,320

add dx,x1

cmp dx,y1

jl LM6

inc di

sub dx,y1

LM6:

dec bx

jnz LM5

jmp EXIT

LM7:

xchg ax,x2

sub ax,x2

mov x1,ax

cmp ax,y1

jl LM10

mov bx,x1

inc bx

mov dx,x1

shr dx,1

LM8:

mov byte ptr [di],63

dec di

add dx,y1

cmp dx,x1

jl LM9

add di,320

sub dx,x1

LM9:

dec bx

jnz LM8

jmp EXIT

LM10:

mov bx,y1

inc bx

mov dx,y1

shr dx,1

LM11:

mov byte ptr [di],63

add di,320

add dx,x1

cmp dx,y1

jl LM12

dec di

sub dx,y1

LM12:

dec bx

jnz LM11

EXIT:

pop y1

pop x1

ret

Line endp

CountState proc

mov x2,160

mov y2,0

fld a

fld da

fadd

fstp a

fld a

fcos

fild xr

fmul

fild xc

fadd

fistp x1

fld a

fsin

fild yr

fmul

fild yc

fadd

fistp y1

fld a

fsin

fild abscale

fmul

mov ry,9

fild ry

fadd

fist ry

fst rry

fld xyscale

fmul

fist rx

fstp rrx

ret

CountState endp

Sphere proc

mov di,x1

mov ax,y1

shl ax,6

add di,ax

shl ax,2

add di,ax

mov cx,rx

SphereLoop:

fld1

fild rx

fld rrx

fdiv

fst res

fld res

fmul

fild ry

fld rry

fdiv

fst res

fld res

fmul

fadd

fsub

fstp res

bt res,31

jc SSkip

fld res

mov res,63

fild res

fmul

fistp res

mov ax,ry

shl ax,6

mov bx,ry

shl bx,8

add ax,bx

push di

add di,rx

add di,ax

mov bl,byte ptr res

mov [di],bl

pop di

push di

sub di,rx

add di,ax

mov bl,byte ptr res

mov [di],bl

pop di

push di

add di,rx

sub di,ax

mov bl,byte ptr res

mov [di],bl

pop di

push di

sub di,rx

sub di,ax

mov bl,byte ptr res

mov [di],bl

pop di

SSkip:

dec rx

cmp rx,0

jge SphereLoop

mov rx,cx

dec ry

cmp ry,0

jge SphereLoop

ret

Sphere endp

ShowBuffer proc

push 0a000h

pop es

xor di,di

xor si,si

mov cx,16000

cld

rep movsd

ret

ShowBuffer endp

ClearBuffer proc

push ds

pop es

xor eax,eax

push seg buffer

pop es

xor di,di

mov cx,16000

cld

rep stosd

ret

ClearBuffer endp

TestKey proc

mov ah,0bh

int 21h

cmp al,-1

jne WEP_Exit

mov ah,07h

int 21h

cmp al,'1'

jne Not1

mov yc,50

mov xr,25

mov yr,5

mov abscale,1

Not1:

cmp al,'2'

jne Not2

mov yc,100

mov xr,50

mov yr,10

mov abscale,2

Not2:

cmp al,'3'

jne Not3

mov yc,150

mov xr,75

mov yr,15

mov abscale,3

Not3:

cmp al,27

WEP_Exit:

ret

TestKey endp

startup proc

push @data

pop ds

mov ax,0013h

int 10h

mov al,63

PaletteLoop:

mov dx,3c8h

out dx,al

inc dx

out dx,al

out dx,al

out dx,al

dec al

jnz PaletteLoop

MainLoop:

call CountState

call ClearBuffer

call Line

call Sphere

call ShowBuffer

call TestKey

jne MainLoop

mov ax,0003h

int 10h

mov ax,4c00h

int 21h

startup endp

end startup

Link to post
Share on other sites

А ещё есть очень удобный справочник в электронном виде, правда по книге Юрова. Загрузил бы...но он вечит почти 600 Мб

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...