Erv&Sed Posted March 10, 2005 Report Share Posted March 10, 2005 (edited) Прежде чем начать произнесите клятву вот здесь. Дальше читают только те кто произнес клятву. Тксс, ну начнем, для начала вам неободимо скачать следующие вещи. TAsm - компиляатор от компании Borland (ВНИМАНИЕ!!! ссылка была изменена). Зубков С.В. Assembler для Dos, Windows и UNIX - очень хорошая книга. AsmEdit - IDE, потом поймете что это и с чем его едят. Norton Commander - может понадобится. Olly Debugger - хороший отладчик. Instruction - инструкция по установке компилятора и IDE. Edited March 15, 2005 by Erv&Sed Quote Link to post Share on other sites
Erv&Sed Posted March 15, 2005 Author Report Share Posted March 15, 2005 Итак теперь вроде все готово чтобы написать первую программу, ну и вот он: .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) - свойства - программа - и снять галочку "закрыть окно по завершении работы". Вы можете спросить как-же так никакой теории, нет описание операторов ... . Но именно поэтому я и написал что предисловии НЕ будет!!! Ну все жду програмки и вопросы. Quote Link to post Share on other sites
Erv&Sed Posted March 16, 2005 Author Report Share Posted March 16, 2005 кто-то жаждал изучить Ассемблер, а что-же никто вперед не идет??? Quote Link to post Share on other sites
Unregistered - M Posted April 16, 2005 Report Share Posted April 16, 2005 A chto, kina bol'she ne budet? Quote Link to post Share on other sites
Erv&Sed Posted May 2, 2005 Author Report Share Posted May 2, 2005 Вопрос не совсем понятен. Quote Link to post Share on other sites
Unregistered - M Posted May 2, 2005 Report Share Posted May 2, 2005 Prodolzhenia trebuet narod... Tochnee ya... Quote Link to post Share on other sites
MEFistofeles Posted May 2, 2005 Report Share Posted May 2, 2005 моя прога Шарик крутится на верёвке (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 Quote Link to post Share on other sites
MEFistofeles Posted May 2, 2005 Report Share Posted May 2, 2005 А ещё есть очень удобный справочник в электронном виде, правда по книге Юрова. Загрузил бы...но он вечит почти 600 Мб Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.