Jump to content
Sign in to follow this  
aku budak baru belajar

Win32 Dan Assembly

Recommended Posts

Assalamualaikum..

Ni post pertama aku di putera.com ni.aku tengok di sini ada otai2 asm.jadi aku bukala thread ni untuk berbincang mengenai asm dan win32 programming.oleh kerana aku pun tak tau apa2 pasal ni,jadi biarlah aku mula tanyakan soalan2 bodo aku dulu.sapa2 yang nak bersoal-jawab di sini pun boleh juga,tapi biarlah kena dengan tajuknya.dan biarlah dalam bm. aku tak terer bi.diharap otai2 semua dapat membantu memberikan jawapan yang best.

1. assembler yang paling best? yang paling sesuai digunakan untuk orang baru?

-masm

-tasm

-nasm

-goasm

-lain2

2. apa itu macro dan bagaimana ia digunakan? apa tujuannya?

3. macammana nak ubah kod C kepada asm? contohnya:

#define MAX_LEN 256

atau

typedef struct {

int sign;

int hlen;

int csum;

int len;

} MY_FORMAT;

dan lain2 lagi laa.. macammana pula kalau struct tu ada bit fields atau union?

Share this post


Link to post
Share on other sites

w'salam.. selamat datang ke putera.com.

IMO, kalau nak ukur tahap ke'besh'an assemblers ni kiter kena laa ader konteks. Kalau nak kira keseluruhan, takde yang paling besh sebab lain assembler lain plak ciri2nya, lain laa kalau hang nak opinion yang berat sebelah smile.gif. Tapi bagi aku laa, untuk orang yang nak assembler yang mudah digunakan (win32), aku rekemen GoAsm, dan jugak MASM. Kalau ikut sejarah, MASM dan TASM adalah antara yang terawal dan maser tuh TASM memang popular. Sekarang TASM dah tenggelam ngan kemunculan assemblers FREE yang lebih besh. MASM plak still ramai supporters. Kalau hang nak assembler yang mengajar hang erti pengaturcaraan sebenarnya, aku rekemen... cam biasa laa.. FASM (flatassembler.net). Pantas, kecik, free, open-source (bukan under gpl), selalu update, penulisnya suka jawab soalan kat board dengan senang hati dan macam2 lagi laa..

2 - Dalam assembler, macro ni kiranya sebijik arahan yang terdiri daripada arahan2 kecik (micro). Tujuannya biasanya adalah untuk memudahkan, mempercepatkan penulisan/penghasilan kod. Contohnya, secara tradisional, arahan asm 'push' cuma trima satu operand jer dan jenis operand ni terhad kepada imm value, register, dan jugak memory location. Tapi dengan kemudahan macro, kiter bleh define satu arahan macro 'push' yang menerima pelbagai jenis operand dan lebih dari satu operand dalam satu baris kod. So,

    push  0
    push  eax
    push  dword [eax]
  
bleh ditulis sebagai
  push 0, eax, dword [eax]
malah kiter bleh jugak buat macam
  push 'Hello World', addr [ebp+8]
(pointer to string, runtime effective address) dan macam2 lagi laa.. Dengan keupayaan macro dan preprocessor yang canggih, assembler cam fasm bleh support macam2 sintaks kod yang diinginkan (tapi still limited laa). 3 - Nak translate kod C ke asm kena tau dua2 language. Syntax asm yang bleh digunakan berbeza-beza bergantung kepada assembler yang digunakan. Dalam asm, kod yang simple cam arahan #define yang hang tunjuk tu bleh ditulis sebagai
MAX_LEN equ 256
atau
MAX_LEN = 256

biasanya dalam masm guna 'equ'. Dalam fasm guna '='.. tapi secara teorinya dua2 pun ok gak.

Kalau nak ubah yang kompleks tu kena guna macro laa kot. Kalau hang banyak kena ubah kod C ke asm, e.g Win32 headers dan hang malas nak buat secara manual, ader baiknya hang guna assembler cam MASM, sebab dah ader orang tolong convertkan..

soalan aku plak:

-hang ni orang mana?

-aper pengalaman pengaturcaraan sebelum nih?

Share this post


Link to post
Share on other sites

Ancient One, kat mana aku boleh cari maklumat mengenai assembly language sebagai "BEGINNER". sem nie aku amik mata pelajaran tu la.... aduhai..... pensyarah kata student dia 4 kali repeat, nak kena study awal awal nie....

Share this post


Link to post
Share on other sites

assembly language bukan satu jer.. depends on processor's arch. ko blajar yang maner? kat library skolah hang tu gerenti ader buku pasal nih. cari jer.

Share this post


Link to post
Share on other sites

Aku tak ingat la, pensyarah tu cakap latest proc.. dia punya product aku tak ingat... "malas gi library" kekekek... kau ada tak laman web yang ajo mudah-mudah... senang paham? kalau susah paham nanti tersadai pulak...

Share this post


Link to post
Share on other sites

tak nak kasi link.. assembly takde basic. math ngan logik atau/dan/etc yang hang blajar kat skolah tu laa basicnya. kalau nak yang basic lebih sikit, tu ler, hang blajar machine's architecture tu.

Share this post


Link to post
Share on other sites

Aku jumpa dari silibus kemungkinan aku akan belajar MASM 6.1.1 (microsoft assembler). Ada tak link BEGINNER untuk aku belajar nie... boleh tak kau tolong bagi satu contoh "HELLO WORLD" untuk aku... tima kasih ancient....

Share this post


Link to post
Share on other sites

bleh cuba baca art of assembly kat http://webster.cs.ucr.edu/

"HELLO WORLD" ngan masm aku tak reti. ngan fasm aku reti smile.gif. dah dekat 3 taun tak sentuh masm.

masm forum kat www.masmforum.com/.

kalau hang guna dos, hang kena tau gak dos/bios programming interface. basically ni hang kena guna 'int' laa.. e.g int 21h, int 13h, etc.. untuk reference yang besh, try Ralf Brown's interrupt list (guna jer keyword cam 'interrupt list' kat google, gerenti kluar laa menatang ni).

Share this post


Link to post
Share on other sites

sorry guys,lambat reply.aku lupa password aku la.ancient,aku suda buat search di internet & banyak juga yg aku belajar.skrg aku ada 3 assemblers dlm simpanan aku - masm, goasm & fasm.aku suda baca fasm punya manual & aku suda cuba sikit2 contoh dia.aku harap ko boleh ajar aku pasal macro dia.aku ndak faham pasal dia punya forward,reverse,equ & lain2 tu la.satu lagi knp saiz kod lain2 bila aku kompil utk program dos & juga windows? cth dalam dos, 'inc eax' jadi 2 bytes tapi dalam windows jadi 1 byte.bukanka arahan yg sama hasilkan bytes yg sama?

ancient,

-aku orang kk juga.tp skrg aku di s'wak.

-aku tau sikit2 C + windows.

Share this post


Link to post
Share on other sites

bleh ajer.. tang maner tak paham tuh?

dalam dos, default code size adalah 16 bit dan default utk win32 adalah 32-bit. bila kita buat operation 16-bit dalam windows, eg inc ax ia akan letakkan prefix 66h menandakan ia adalah operation 16-bit utk inc eax...

kalau nak ubah default code size, guna directive use16 atau use32.

Share this post


Link to post
Share on other sites

SOALAN 1Aku ada sikit yang kurang paham mengenai nak proses string. Ada tak cara cammana aku nak directly assign string to register, aku taknak guna loop macam kat bawah nie

MOV ESI,0

MOV EXC, SIZEOF dari

ULANG:

MOV AL,dari[ESI]

MOV kepada[ESI],AL

INC ESI

LOOP ULANG

aku nak something macam nie

MOV ??,"Assalamualaikum" >?? mewakili register

SOALAN 2

Ada tak ringkasan untuk proses cursor nie...

MOV AH,02h

MOV BH,00

MOV DL,25

MOV DH,10

INT 10h

Edited by butaKomputer

Share this post


Link to post
Share on other sites

Ok thanks zeph & ancient....

NAK TANYA:

Bila kita tulis kod guna assembly, bagaimana kita nak satukan kesemua fail dalam 1 program contoh:

main.asm, kira.asm, modul1.asm

soalanya camne kita nak panggil fail kira.asm dalam main.asm...atau dalam body main.asm kita panggil kira.asm (boleh ker?)

Share this post


Link to post
Share on other sites

in most assembler u can use include directive.. tugasnya bleh katakan sama jer ngan ko pastekan isi kandungan fail tu pada line tersebut.

Share this post


Link to post
Share on other sites

Aku try buat macam kod kat bawah, tak boleh pun... kalau c boleh.... Ancient macam kau cakap boleh letak kat mana mana.... macam mana?

##############################################

TITLE panggil

INCLUDE irvine32.inc

.data

ayat BYTE "Testing",0

.code

main PROC

MOV EDX,OFFSET ayat

INCLUDE "fail1.asm" ;aku dah try fail1.inc

exit

main endP

end main

Edited by butaKomputer

Share this post


Link to post
Share on other sites

Sori ancient, hari tu aku build tak boleh bila hari nie aku build takda error mungkin aku tersilap build 16bit kot... tapi aku heran la... aku dah try build banyak kali semalam.... apa apa pun thanks, cara tu boleh jalan... biggrin.gif

Share this post


Link to post
Share on other sites

u're welcome.. biasa ler tuh.. aku suka guna fasm sebab kalau ader aper2 silap aku cuma perlu periksa source jer, commandline argument takyah.. hehehe.. cam MASM banyak dia jer option.. aku pon confuse.

Share this post


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.

Loading...
Sign in to follow this  

×
×
  • Create New...