Netwide-assembler-binary-options

Netwide-assembler-binary-options

Pilihan strategi-strategi-biner-pilihan
Pedagang forex muda
Pilihan biner-tangga-strategi


Non farm payroll dan forex converter Online-forex-trading-wikipedia Indicatore-ichimoku-forex-trading Forex-trading-fxcm-review Forex-trader-jobs-chicago Metode trade-binary-options-using-the-wyckoff

The Netwide Assembler: NASM The Netwide Disassembler, NDISASM The Netwide Disassembler adalah program pendamping kecil untuk Netwide Assembler, NASM. Rasanya memalukan untuk memiliki perakit x86, lengkap dengan meja instruksi penuh, dan tidak memanfaatkannya sebanyak mungkin, jadi Heres sebuah disassembler yang berbagi tabel instruksi (dan beberapa kode lainnya) dengan NASM. The Netwide Disassembler tidak melakukan apapun kecuali menghasilkan pembongkaran file sumber biner. NDISASM tidak memiliki pemahaman tentang format file objek, seperti objdump. Dan tidak akan mengerti DOS. File EXE seperti debug akan. Itu hanya disassembles. Lihat bagian 1.3 untuk petunjuk pemasangan. NDISASM, seperti NASM, memiliki halaman manual yang mungkin ingin Anda tempatkan berguna, jika Anda menggunakan sistem Unix. Untuk membongkar sebuah file, Anda biasanya akan menggunakan perintah dari bentuk NDISASM dapat membongkar kode 16, 32 atau 64-bit dengan mudah, tentu saja Anda ingat untuk menentukan di mana ia bekerja. Jika tidak ada switch -b hadir, NDISASM bekerja dalam mode 16-bit secara default. Tombol -u (untuk USE32) juga memanggil mode 32-bit. Dua opsi baris perintah lainnya adalah -r yang melaporkan nomor versi NDISASM yang Anda jalankan, dan -h yang memberi ringkasan singkat opsi baris perintah. Untuk membongkar file DOS dengan benar, disassembler harus mengasumsikan bahwa instruksi pertama dalam file diisikan ke alamat 0x100. Bukan nol. NDISASM, yang mengasumsikan secara default bahwa setiap file yang Anda berikan dimuatkan pada nol, oleh karena itu perlu diberitahu tentang hal ini. Opsi -o memungkinkan Anda untuk menyatakan asal yang berbeda untuk file yang sedang Anda bongkar. Argumennya dapat dinyatakan dalam format numerik NASM mana pun: desimal secara default, jika dimulai dengan atau 0x atau berakhir pada he he he he. Jika itu berakhir di Q oktal nya. Dan jika itu berakhir di B binernya. Oleh karena itu, untuk membongkar sebuah file: akan melakukan triknya. Misalkan Anda membongkar sebuah file yang berisi beberapa data yang bukan kode mesinnya, dan kemudian berisi beberapa kode mesin. NDISASM dengan setia akan membajak melalui bagian data, menghasilkan petunjuk mesin di manapun ia bisa (walaupun kebanyakan dari mereka akan terlihat aneh, dan beberapa mungkin memiliki awalan yang tidak biasa, misalnya FS OR AX, 0x240A), dan menghasilkan instruksi DB yang sering terjadi jika benar-benar bingung . Kemudian akan mencapai bagian kode. Misalkan NDISASM baru saja selesai menghasilkan instruksi mesin aneh dari bagian data, dan posisi filenya sekarang menjadi satu byte sebelum dimulainya bagian kode. Sangat mungkin bahwa instruksi palsu lain akan dihasilkan, dimulai dengan byte akhir dari bagian data, dan kemudian instruksi pertama yang benar di bagian kode tidak akan terlihat karena titik awal melompatiinya. Ini tidak benar-benar ideal. Untuk menghindarinya, Anda bisa menentukan titik sinkronisasi, atau memang sebanyak titik sinkronisasi yang Anda suka (walaupun NDISASM hanya bisa menangani 2147483647 titik sync secara internal). Definisi titik sinkron adalah ini: NDISASM menjamin untuk menyentuh titik-titik sinkronisasi persis saat pembongkaran. Jika memikirkan tentang menghasilkan sebuah instruksi yang akan menyebabkannya melompati titik sinkron, ia akan membuang instruksi dan keluaran itu sebagai gantinya. Jadi akan mulai pembongkaran persis dari titik sync, jadi Anda akan melihat semua petunjuk di bagian kode Anda. Poin sinkronisasi ditentukan menggunakan opsi -s: mereka diukur dari segi asal program, bukan posisi file. Jadi jika Anda ingin melakukan sinkronisasi setelah 32 byte file, Anda harus melakukan Seperti yang dinyatakan di atas, Anda dapat menentukan beberapa penanda sinkronisasi jika Anda perlu, hanya dengan mengulangi opsi -s. Misalkan Anda membongkar sektor boot dari disket DOS (mungkin memiliki virus, dan Anda perlu memahami virusnya sehingga Anda tahu jenis kerusakan yang mungkin Anda lakukan terhadap Anda). Biasanya, ini akan berisi instruksi JMP, lalu beberapa data, lalu sisa kode. Jadi ada kemungkinan bagus untuk NDISASM tidak sejajar saat data berakhir dan kode dimulai. Oleh karena itu dibutuhkan titik sinkron. Di sisi lain, mengapa Anda harus menentukan titik sync secara manual Apa yang Anda lakukan untuk menemukan di mana titik sinkronisasinya, pasti, adalah membaca instruksi JMP, dan kemudian menggunakan alamat targetnya sebagai titik sinkronisasi . Jadi, NDISASM dapat melakukannya untuk Anda Jawabannya tentu saja ya: menggunakan salah satu dari switch identik -a (untuk sinkronisasi otomatis) atau -i (untuk sinkronisasi cerdas) akan mengaktifkan mode auto-sync. Modus auto-sync secara otomatis menghasilkan titik sinkronisasi untuk lompatan PC-relative forward atau instruksi panggilan yang NDISASM hadapi. (Karena NDISASM adalah one-pass, jika menemukan lompatan PC-relatif yang targetnya telah diproses, tidak banyak yang dapat dilakukan untuk melakukannya.) Hanya lompatan PC-relative yang diproses, karena lompatan absolut adalah melalui register (Dalam hal ini NDISASM tidak tahu apa yang tercantum dalam daftar) atau melibatkan alamat segmen (dalam hal ini kode target tidak berada di segmen yang sama dengan NDISASM yang sedang dikerjakan, sehingga titik sinkronisasi tidak dapat ditempatkan di tempat yang berguna). Untuk beberapa jenis file, mekanisme ini secara otomatis akan menempatkan titik-titik sinkronisasi di semua tempat yang tepat, dan menyelamatkan Anda dari keharusan menempatkan titik sinkronisasi secara manual. Namun, perlu ditekankan bahwa mode auto-sync tidak dijamin untuk menangkap semua titik sinkronisasi, dan Anda mungkin masih perlu menempatkannya secara manual. Mode sinkronisasi otomatis tidak mencegah Anda untuk menyatakan titik sinkronisasi manual: ini hanya menambahkan yang dibuat secara otomatis ke yang Anda berikan. Its sempurna layak untuk menentukan -i dan beberapa -s pilihan. Peringatan lain dengan mode auto-sync adalah jika, dengan kebetulan yang tidak menyenangkan, sesuatu di bagian data Anda harus dibongkar ke panggilan relatif PC atau instruksi lompat, NDISASM dengan patuh dapat menempatkan titik sinkronisasi di tempat yang benar-benar acak, misalnya di Tengah salah satu petunjuk di bagian kode Anda. Jadi Anda mungkin berakhir dengan pembongkaran yang salah bahkan jika Anda menggunakan sinkronisasi otomatis. Sekali lagi, tidak banyak yang dapat saya lakukan mengenai hal ini. Jika Anda memiliki masalah, Anda harus menggunakan titik sinkronisasi manual, atau gunakan opsi -k (didokumentasikan di bawah) untuk menekan pembongkaran area data. Opsi -e melewatkan sebuah header pada file tersebut, dengan mengabaikan byte N yang pertama. Ini berarti bahwa header tidak dihitung terhadap disassembly offset: jika Anda memberi -e10 -o10. Pembongkaran akan dimulai pada byte 10 dalam file, dan ini akan diberikan offset 10, bukan 20. Opsi -k diberikan dengan dua argumen numerik yang dipisahkan koma, yang pertama adalah offset perakitan dan yang kedua adalah sejumlah Byte untuk dilewati Ini akan menghitung byte yang dilewati ke offset perakitan: penggunaannya adalah untuk menekan pembongkaran bagian data yang tidak berisi apapun yang ingin Anda lihat. Tidak ada bug yang diketahui. Namun, apapun yang Anda temukan, dengan tambalan jika memungkinkan, harus dikirim ke nasm-bugslists.sourceforge. Atau ke situs pengembang di nasm.us dan coba perbaiki. Jangan ragu untuk mengirimkan kontribusi dan fitur baru juga. Netwide Assembler: NASM Seperti kebanyakan perakit, setiap baris sumber NASM berisi (kecuali jika itu adalah makro, perintah preprocessor atau direktif assembler: lihat Bab 4 dan Bab 5) beberapa kombinasi dari Empat bidang Seperti biasa, sebagian besar bidang ini opsional adanya atau tidak adanya kombinasi label, instruksi dan komentar diperbolehkan. Tentu saja, medan operan diperlukan atau dilarang oleh keberadaan dan sifat bidang instruksi. NASM tidak menempatkan batasan pada ruang putih dalam satu garis: label mungkin memiliki ruang putih di depan mereka, atau petunjuk mungkin tidak memiliki tempat di depan mereka, atau apapun. Kolon setelah label juga opsional. (Perhatikan bahwa ini berarti bahwa jika Anda bermaksud untuk kode lodsb sendirian di garis, dan ketik lodab secara tidak sengaja, maka itu masih merupakan garis sumber yang valid yang tidak melakukan apa pun kecuali menentukan label. Menjalankan NASM dengan opsi baris perintah-label-label Akan menyebabkannya memperingatkan Anda jika Anda menentukan label sendiri pada garis tanpa tanda titik akhir.) Karakter yang valid dalam label adalah huruf, angka,. . . . dan. Satu-satunya karakter yang bisa digunakan sebagai karakter pertama dari sebuah identifier adalah huruf. (Dengan arti khusus: lihat bagian 3.8), dan. Pengenal juga dapat diawali dengan tanda untuk menunjukkan bahwa itu dimaksudkan untuk dibaca sebagai pengenal dan bukan kata reserved, jika ada modul lain yang Anda tautkan dengan mendefinisikan simbol yang disebut eax. Anda bisa merujuk pada eax dalam kode NASM untuk membedakan simbol dari register. Bidang instruksi mungkin berisi instruksi mesin: instruksi Pentium dan P6, instruksi FPU, instruksi MMX, dan instruksi yang tidak terdokumentasi semuanya didukung. Instruksi mungkin diawali dengan LOCK. REPUTASI. REPE REPZ atau REPNE REPNZ. Dengan cara biasa Awalan ukuran alamat dan ukuran operan eksplisit A16. A32. O16 dan O32 disediakan - satu contoh penggunaannya diberikan pada bab 9. Anda juga dapat menggunakan nama register segmen sebagai awalan instruksi: coding es mov bx, kapak sama dengan coding mov es: bx, ax. Kami merekomendasikan sintaks yang terakhir, karena konsisten dengan fitur sintaksis bahasa lainnya, namun untuk instruksi seperti LODSB. Yang tidak memiliki operan namun dapat meminta penggantian segmen, tidak ada cara sintaksis yang bersih untuk melanjutkan dari es lodsb. Instruksi tidak diperlukan untuk menggunakan awalan: prefiks seperti CS. A32. LOCK atau REPE dapat muncul di garis sendiri, dan NASM hanya akan menghasilkan byte awalan. Selain instruksi mesin yang sebenarnya, NASM juga mendukung sejumlah instruksi pseudo, yang dijelaskan pada bagian 3.2. Instruksi operan dapat mengambil beberapa bentuk: mereka dapat register, yang dijelaskan secara sederhana oleh nama register (misalnya kapak bp. Ebx cr0. NASM tidak menggunakan sintaks gaya gas di mana nama register harus diawali dengan sebuah tanda) , Atau alamat tersebut bisa efektif (lihat bagian 3.3), konstanta (bagian 3.4) atau ungkapan (bagian 3.5). Untuk instruksi floating-point, NASM menerima berbagai sintaks: Anda dapat menggunakan dua bentuk operand seperti dukungan MASM, atau Anda dapat menggunakan bentuk operand tunggal NASM asli dalam banyak kasus. Rincian semua bentuk setiap instruksi yang didukung diberikan pada lampiran A. Misalnya, Anda dapat memberi kode: Hampir semua instruksi floating-point yang merujuk pada memori harus menggunakan salah satu awalan DWORD. QWORD atau TWORD untuk menunjukkan ukuran memori operand yang diacu. Pseudo-instruksi adalah hal-hal yang, meskipun tidak nyata x86 instruksi mesin, digunakan di bidang instruksi tetap karena itulah tempat yang paling nyaman untuk menempatkan mereka. Instruksi pseudo saat ini adalah DB. DW. DD. DQ dan DT. Rekan mereka yang tidak bersatu RESB. RESW. RESD. RESQ dan REST. Perintah INCBIN, perintah EQU, dan awalan TIMES. DB. DW. DD. DQ dan DT digunakan, sama seperti di MASM, untuk mendeklarasikan data yang diinisialisasi pada file output. Mereka dapat dipanggil dengan berbagai cara: DQ dan DT tidak menerima konstanta numerik atau konstanta string sebagai operan. RESB. RESW. RESD. RESQ dan REST dirancang untuk digunakan di bagian BSS dari sebuah modul: mereka mendeklarasikan ruang penyimpanan yang tidak diinisiasi. Masing-masing mengambil satu operand, yaitu jumlah byte, kata, doublewords atau apapun yang harus dipesan. Sebagaimana tercantum dalam bagian 2.2.7. NASM tidak mendukung sintaks MASMTASM untuk memesan ruang yang tidak diinisiasi dengan menulis DW. Atau hal serupa: inilah yang dilakukannya. Operand ke sebuah konsep pseudo-RESP adalah ekspresi kritis. Lihat bagian 3.7. INCBIN dipinjam dari Amiga assembler tua DevPac: itu termasuk file biner verbatim ke file output. Ini bisa berguna untuk (misalnya) termasuk data grafis dan suara langsung ke file eksekusi game. Hal ini dapat disebut dalam salah satu dari tiga cara berikut: EQU mendefinisikan simbol dengan nilai konstan: ketika EQU digunakan, garis sumber harus mengandung label. Tindakan EQU adalah menentukan nama label yang diberikan sesuai nilai operandnya (hanya). Definisi ini mutlak, dan tidak bisa berubah nanti. Jadi, misalnya, mendefinisikan msglen menjadi konstanta 12. msglen mungkin tidak kemudian didefinisikan ulang nanti. Ini bukan definisi preprocessor: nilai msglen dievaluasi satu kali. Menggunakan nilai dari (lihat bagian 3.5 untuk penjelasan) pada titik definisi, daripada dievaluasi dimanapun rujukan dan menggunakan nilai pada titik acuan. Perhatikan bahwa operan ke EQU juga merupakan ekspresi kritis (bagian 3.7). Awalan TIMES menyebabkan instruksi dirakit beberapa kali. Ini sebagian hadir sebagai setara NASM dengan sintaks DUP yang didukung oleh perakit yang kompatibel dengan MASM, karena Anda dapat membuat kode atau hal serupa namun WAKTU lebih fleksibel dari itu. Argumen untuk TIMES bukan hanya konstanta numerik, tapi juga ekspresi numerik. Sehingga Anda dapat melakukan hal-hal seperti yang akan menyimpan cukup banyak ruang untuk membuat total buffer sebesar 64 orang. Akhirnya, KALI dapat diterapkan pada instruksi biasa, sehingga Anda dapat memberi kode pada loop terbungkus sepele di dalamnya: Perhatikan bahwa tidak ada perbedaan yang efektif. Antara waktu 100 resb 1 dan resb 100. kecuali yang terakhir akan dirakit sekitar 100 kali lebih cepat karena struktur internal assembler. Operan untuk KALI. Seperti EQU dan RESB dan teman-teman, adalah ekspresi kritis (bagian 3.7). Perhatikan juga bahwa TIMES tidak dapat diterapkan pada makro: alasan untuk hal ini adalah bahwa KALI diproses setelah fase makro, yang memungkinkan argumen ke KALI berisi ekspresi seperti 64-buffer seperti di atas. Untuk mengulang lebih dari satu baris kode, atau makro kompleks, gunakan perintah direksi preprocessor. Alamat yang efektif adalah operan ke instruksi yang merujuk pada memori. Alamat yang efektif, di NASM, memiliki sintaks yang sangat sederhana: terdiri dari ekspresi yang mengevaluasi ke alamat yang diinginkan, yang disertakan dalam tanda kurung siku. Sebagai contoh: Apa pun yang tidak sesuai dengan sistem sederhana ini bukanlah referensi memori yang valid di NASM, misalnya es: wordvarbx. Alamat efektif yang lebih rumit, seperti yang melibatkan lebih dari satu register, bekerja dengan cara yang persis sama: NASM mampu melakukan aljabar pada alamat efektif ini, sehingga hal-hal yang tidak selalu terlihat legal sangat baik: Beberapa bentuk alamat efektif Memiliki lebih dari satu bentuk yang terkumpul dalam kebanyakan kasus seperti NASM akan menghasilkan bentuk terkecil yang dimilikinya. Misalnya, ada bentuk rakitan yang berbeda untuk alamat efektif e-20 dan eaxeax 32 bit. Dan NASM umumnya akan menghasilkan yang terakhir dengan alasan bahwa yang pertama membutuhkan empat byte untuk menyimpan offset nol. NASM memiliki mekanisme mengisyaratkan yang akan menyebabkan eaxebx dan ebxeax menghasilkan opcodes yang berbeda ini kadang berguna karena esiebp dan ebpesi memiliki register segmen default yang berbeda. Namun, Anda bisa memaksa NASM untuk menghasilkan alamat yang efektif dalam bentuk tertentu dengan menggunakan kata kunci BYTE. KATA. DWORD dan NOSPLIT Jika Anda memerlukan eax3 untuk dirakit menggunakan field offset kata ganda, bukan satu byte NASM yang biasanya akan dihasilkan, Anda dapat kode dword eax3. Demikian pula, Anda dapat memaksa NASM untuk menggunakan offset byte untuk nilai kecil yang tidak terlihat pada lintasan pertama (lihat bagian 3.7 untuk contoh fragmen kode semacam itu) dengan menggunakan byte eaxoffset. Sebagai kasus khusus, eax byte akan kode eax0 dengan offset byte nol, dan dword eax akan mengkodekannya dengan double word offset nol. Bentuknya normal, eax. Akan dikodekan tanpa offset field. Demikian pula, NASM akan membagi eax2 menjadi eaxeax karena memungkinkan bidang offset tidak ada dan ruang yang akan disimpan sebenarnya, juga akan membagi eax2offset menjadi eaxeaxoffset. Anda dapat memerangi perilaku ini dengan menggunakan kata kunci NOSPLIT: nosplit eax2 akan memaksa eax20 untuk dibangkitkan secara harfiah. NASM memahami empat jenis konstanta: numerik, karakter, string dan floating-point. Konstanta numerik hanyalah angka. NASM memungkinkan Anda untuk menentukan angka dalam berbagai basis angka, dengan berbagai cara: Anda dapat mencadangkan H. Q dan B untuk hex, oktal dan biner, atau Anda dapat awalan 0x untuk hex dengan gaya C, atau Anda dapat Awalan untuk hex dengan gaya Borland Pascal. Namun, perhatikan bahwa awalan itu berfungsi ganda sebagai awalan pengenal (lihat bagian 3.1), jadi nomor hex yang diawali dengan sebuah tanda harus memiliki digit setelah hurufnya. Konstanta karakter terdiri dari hingga empat karakter yang dilipat dalam tanda kutip tunggal atau ganda. Jenis kutipan tidak ada bedanya dengan NASM, kecuali tentu saja yang mengelilingi konstanta dengan tanda petik tunggal memungkinkan tanda kutip ganda muncul di dalamnya dan sebaliknya. Sebuah karakter yang konstan dengan lebih dari satu karakter akan diatur dengan urutan kecil-endian dalam pikiran: jika Anda kode maka konstanta yang dihasilkan tidak 0x61626364. Tapi 0x64636261 Sehingga jika Anda kemudian menyimpan nilai ke dalam memori, itu akan membaca abcd daripada dcba. Ini juga merupakan rasa konstanta karakter yang dipahami oleh instruksi CPUID Pentiums (lihat bagian A.22). Konstanta string hanya dapat diterima oleh beberapa instruksi semu, yaitu keluarga DB dan INCBIN. Konstanta string terlihat seperti karakter yang konstan, hanya lebih lama. Ini diperlakukan sebagai gabungan konstanta karakter dengan ukuran maksimum untuk kondisi. Jadi berikut ini adalah ekivalen: Dan berikut ini juga ekuivalen: Perhatikan bahwa saat digunakan sebagai operan ke db. Konstanta seperti ab diperlakukan sebagai string konstan meskipun cukup pendek untuk menjadi karakter konstan, karena jika tidak, db ab akan memiliki efek yang sama seperti db a. Yang akan konyol Demikian pula, tiga karakter atau empat karakter konstanta diperlakukan sebagai string saat mereka beroperasi ke dw. Konstanta floating-level hanya dapat diterima sebagai argumen DD. DQ dan DT. Mereka dinyatakan dalam bentuk tradisional: digit, maka suatu periode, kemudian secara opsional lebih banyak digit, lalu secara opsional E diikuti oleh eksponen. Periodenya wajib, sehingga NASM dapat membedakan antara dd 1. yang menyatakan konstanta integer, dan dd 1.0 yang menyatakan konstanta floating-point. NASM tidak bisa melakukan aritmatika kompilasi waktu pada konstanta floating-point. Ini karena NASM dirancang untuk menjadi portabel - walaupun selalu menghasilkan kode untuk berjalan pada prosesor x86, assembler itu sendiri dapat berjalan pada sistem dengan kompiler ANSI C. Oleh karena itu, assembler tidak dapat menjamin adanya unit floating-point yang mampu menangani format bilangan Intel, sehingga NASM dapat melakukan aritmatika terapung harus menyertakan rangkaian rutin floating-point yang lengkap, yang akan Secara signifikan meningkatkan ukuran assembler untuk keuntungan sangat sedikit. Ekspresi di NASM serupa dengan sintaks untuk yang ada di C. NASM tidak menjamin ukuran bilangan bulat yang digunakan untuk mengevaluasi ungkapan pada waktu kompilasi: karena NASM dapat mengkompilasi dan berjalan pada sistem 64-bit dengan cukup bahagia, jangan anggap bahwa ungkapan dievaluasi dalam Register 32-bit dan jadi coba gunakan overflow integer secara sengaja. Mungkin tidak selalu berhasil. Satu-satunya yang NASM akan menjamin adalah apa yang dijamin oleh ANSI C: Anda selalu memiliki setidaknya 32 bit untuk bekerja. NASM mendukung dua token khusus dalam ekspresi, yang memungkinkan perhitungan melibatkan posisi perakitan saat ini: dan token. Mengevaluasi ke posisi perakitan di awal baris yang berisi ekspresi sehingga Anda dapat kode loop tak terbatas menggunakan JMP. Mengevaluasi ke awal bagian saat ini sehingga Anda dapat mengetahui seberapa jauh ke bagian Anda dengan menggunakan (-). Operator aritmatika yang disediakan oleh NASM tercantum di sini, dalam meningkatkan urutan prioritas. Operator memberikan bitwise OR, persis seperti yang dilakukan oleh instruksi mesin OR. Bitwise OR adalah operator aritmatika dengan prioritas terendah yang didukung oleh NASM. Menyediakan operasi XOR bitwise. Amp menyediakan operasi bitwise AND. Ini memberi sedikit pergeseran ke kiri, sama seperti pada C. Jadi, 5ltlt3 mengevaluasi ke 5 kali 8, atau 40. gtgt memberi sedikit pergeseran ke kanan di NASM, perubahan seperti itu selalu tidak ditandatangani, sehingga Bit bergeser dari ujung kiri diisi dengan nol dan bukan tanda ekstensi dari bit tertinggi sebelumnya. Operator dan operator biasa melakukan penambahan dan pengurangan yang biasa. Adalah operator perkalian. Dan keduanya adalah operator divisi: adalah divisi unsigned dan menandatangani divisi. Demikian pula, dan menyediakan operator modulo yang tidak ditandatangani dan ditandatangani. NASM, seperti ANSI C, tidak memberikan jaminan tentang operasi masuk akal dari operator modulo yang ditandatangani. Karena karakter digunakan secara luas oleh preprocessor makro, Anda harus memastikan bahwa baik operator modulo yang ditandatangani dan tidak bertanda diikuti oleh ruang putih di manapun mereka berada. 3.5.7 Operator Unpad:. -. Operator dengan prioritas tertinggi dalam tata bahasa ekspresi NASM adalah yang hanya berlaku untuk satu argumen. - meniadakan operannya, tidak melakukan apapun (yang disediakan untuk simetri dengan -), menghitung komplemen operandnya, dan SEG menyediakan alamat segmen operannya (dijelaskan secara lebih rinci pada bagian 3.6). Saat menulis program 16 bit yang besar, yang harus dipecah menjadi beberapa segmen, sering kali perlu untuk merujuk pada bagian segmen dari alamat simbol. NASM mendukung SEG operator untuk melakukan fungsi ini. Operator SEG mengembalikan basis segmen yang diinginkan dari simbol, yang didefinisikan sebagai basis segmen yang relatif terhadap offset simbol yang masuk akal. Jadi kode akan memuat ES: BX dengan pointer yang valid ke simbol simbol. Hal-hal dapat menjadi lebih kompleks daripada ini: karena segmen dan kelompok 16 bit dapat tumpang tindih, kadang-kadang Anda mungkin ingin merujuk beberapa simbol menggunakan basis segmen yang berbeda dari yang diinginkan. NASM memungkinkan Anda melakukan ini, dengan menggunakan kata kunci WRT (With Reference To). Jadi Anda bisa melakukan hal-hal seperti memuat ES: BX dengan pointer yang berbeda namun secara fungsional setara dengan simbol simbol. NASM mendukung jauh (antar-segmen) panggilan dan melompat dengan menggunakan segmen panggilan sintaks: offset. Dimana segmen dan offset keduanya mewakili nilai langsung. Jadi, untuk memanggil prosedur yang jauh, Anda bisa memasukkan salah satu dari (Tanda kurung disertakan untuk kejelasan, untuk menunjukkan penguraian yang diinginkan dari petunjuk di atas. Mereka tidak perlu dalam praktiknya.) NASM mendukung prosedur panggilan sintaks jauh sebagai sinonim untuk Pertama dari penggunaan di atas. JMP bekerja secara identik dengan CALL dalam contoh-contoh ini. Untuk mendeklarasikan pointer jauh ke item data di segmen data, Anda harus kode NASM tidak mendukung sinonim yang mudah digunakan untuk hal ini, meskipun Anda selalu dapat menemukannya dengan menggunakan prosesor makro. Batasan NASM adalah bahwa ini adalah assembler dua jalur tidak seperti TASM dan lainnya, ia akan selalu melakukan dua putaran perakitan dengan benar. Oleh karena itu tidak mampu mengatasi file sumber yang cukup kompleks sehingga membutuhkan tiga atau lebih lintasan. Pass pertama digunakan untuk menentukan ukuran semua kode dan data yang dirakit, sehingga lulus kedua, saat menghasilkan semua kode, mengetahui semua simbol yang merujuk pada kode. Jadi satu hal yang tidak dapat ditangani oleh NASM adalah kode yang ukurannya bergantung pada nilai simbol yang dinyatakan setelah kode yang dimaksud. Misalnya, Argumen untuk TIMES dalam kasus ini sama-sama dapat mengevaluasi secara sah untuk segala hal di NASM akan menolak contoh ini karena tidak dapat membedakan ukuran garis TIMES saat pertama kali melihatnya. Ini sama seperti menolak dengan tegas sedikit paradoks kode di mana nilai apapun untuk argumen TIMES adalah dengan definisi yang salah NASM menolak contoh-contoh ini dengan menggunakan konsep yang disebut ekspresi kritis. Yang didefinisikan sebagai ekspresi yang nilainya dibutuhkan untuk dihitung pada celah pertama, dan karena itu harus bergantung hanya pada simbol yang didefinisikan sebelumnya. Argumen pada awalan TIMES adalah ekspresi kritis untuk alasan yang sama, argumen pada keluarga instruksi RESB semu juga merupakan ungkapan kritis. Ekspresi kritis dapat muncul dalam konteks lain juga: pertimbangkan kode berikut. Pada jalur pertama, NASM tidak bisa menentukan nilai simbol1. Karena simbol1 didefinisikan sama dengan simbol2 yang belum terlihat NASM. Pada jalur kedua, oleh karena itu, ketika bertemu dengan garis kapak bergerak, simbol1. Tidak dapat menghasilkan kode untuk itu karena masih belum mengetahui nilai simbol1. Pada baris berikutnya, akan terlihat EQU lagi dan bisa menentukan nilai simbol1. Tapi saat itu akan terlambat. NASM menghindari masalah ini dengan menentukan sisi kanan dari sebuah pernyataan EQU sebagai ekspresi kritis, jadi definisi simbol1 akan ditolak pada celah pertama. Ada isu terkait yang melibatkan referensi ke depan: pertimbangkan fragmen kode ini. NASM, pada satu pass, harus menghitung ukuran instruksi mov eax, ebxoffset tanpa mengetahui nilai offset. Ini tidak memiliki cara untuk mengetahui bahwa offset cukup kecil untuk disesuaikan dengan bidang offset satu byte dan karena itu bisa lolos dengan menghasilkan bentuk yang lebih pendek dari pengkodean alamat efektif untuk semua yang diketahui, dalam melewati satu, offset bisa jadi Simbol di segmen kode, dan mungkin memerlukan bentuk empat byte penuh. Jadi terpaksa menghitung ukuran instruksi untuk mengakomodasi bagian alamat empat byte. Dalam melewati dua, setelah membuat keputusan ini, sekarang dipaksa untuk menghormatinya dan menyimpan instruksi itu besar, jadi kode yang dihasilkan dalam kasus ini tidak sekecil mungkin saja. Masalah ini dapat diatasi dengan menentukan offset sebelum menggunakannya, atau dengan memaksa ukuran byte di alamat efektif dengan mengkode byte ebxoffset. NASM memberi perlakuan khusus pada simbol yang dimulai dengan periode tertentu. Label yang diawali dengan satu periode diperlakukan sebagai label lokal, yang berarti terkait dengan label non-lokal sebelumnya. Jadi, misalnya: Dalam fragmen kode di atas, setiap instruksi JNE langsung melompat ke garis depan, karena dua definisi .loop dipelihara terpisah berdasarkan masing-masing hubungan dengan label non-lokal sebelumnya. Bentuk penanganan label lokal dipinjam dari perancang Amiga Amiga lama, bagaimanapun, NASM melangkah lebih jauh, dalam mengizinkan akses ke label lokal dari bagian kode lainnya. Hal ini dicapai dengan cara menentukan label lokal dalam hal label non-lokal sebelumnya: definisi pertama dari .loop di atas benar-benar mendefinisikan simbol yang disebut label1.loop. Dan yang kedua mendefinisikan sebuah simbol yang disebut label2.loop. Jadi, jika Anda benar-benar membutuhkannya, Anda bisa menulis Kadang-kadang berguna - dalam makro, misalnya - untuk dapat menentukan label yang dapat dirujuk dari mana saja namun tidak mengganggu mekanisme label lokal normal. Label semacam itu tidak bersifat lokal karena akan mengganggu definisi selanjutnya, dan referensi tentang, label lokal dan tidak dapat dilakukan lokal karena makro yang mendefinisikannya tidak akan tahu label nama lengkap. Oleh karena itu NASM memperkenalkan jenis label ketiga, yang mungkin hanya berguna dalam definisi makro: jika label dimulai dengan awalan khusus. . Maka tidak ada mekanisme label lokal. Jadi Anda bisa kode NASM memiliki kapasitas untuk menentukan simbol khusus lainnya yang dimulai dengan periode ganda: misalnya. Mulai digunakan untuk menentukan titik masuk dalam format keluaran obj (lihat bagian 6.2.6) CD cache Wide Assembler Private CDN yang tersedia untuk pelanggan berlisensi. Jangan pernah mengalami 404 breakages lagi Pelajari lebih lanjut. Paket ini disetujui oleh moderator ferventcoder di 8182016. Netwide Assembler, NASM, adalah perakit 80x86 dan x86-64 yang dirancang untuk portabilitas dan modularitas. Ini mendukung berbagai format file objek, termasuk Linux dan BSD a.out, ELF, COFF, Mach-O, Microsoft 16-bit OBJ, Win32 dan Win64. Ini juga akan menampilkan file biner polos. Sintaksnya dirancang agar sederhana dan mudah dimengerti, mirip dengan Intels namun kurang rumit. Ini mendukung semua ekstensi arsitektur x86 yang diketahui saat ini, dan memiliki dukungan kuat untuk makro. Untuk menginstal NetWide Assembler, jalankan perintah berikut dari command line atau dari PowerShell: C: gt choco install nasm Untuk mengupgrade NetWide Assembler, jalankan perintah berikut dari command line atau dari PowerShell: C: gt choco upgrade nasm Virus Scan Results In Kasus di mana malware yang sebenarnya ditemukan, paket-paket tersebut dapat dihapus. Perangkat lunak terkadang memiliki false positive. Moderator tidak harus memvalidasi keamanan perangkat lunak yang mendasarinya, hanya saja sebuah paket mengambil perangkat lunak dari titik distribusi resmi dan memvalidasi perangkat lunak tertanam terhadap titik distribusi resmi (di mana hak distribusi memungkinkan redistribusi). Chocolatey Pro menyediakan perlindungan runtime dari kemungkinan malware. Dependensi Paket ini tidak memiliki ketergantungan. Maintainer (s) Pembuat Perangkat Lunak Simon Tatham dan Julian Hall dan sekarang dikelola oleh sebuah tim yang dipimpin oleh H. Peter Anvin. Hak Cipta 1996-2016 NASM Authors - All rights reserved. Diskusi untuk Paket Assembler NetWide Aturan dasar: Diskusi ini hanya tentang perakit NetWide dan paket Assembler NetWide. Jika Anda memiliki umpan balik untuk Chocolatey, hubungi grup google. Diskusi ini akan memuat lebih dari beberapa versi. Jika Anda memiliki komentar tentang versi tertentu, perlu diketahui bahwa di dalam komentar Anda. Pemelihara Paket Cokelat ini akan diberi tahu tentang komentar baru yang diposkan ke thread Disqus ini, namun TIDAK merupakan jaminan bahwa Anda akan mendapatkan tanggapan. Jika Anda tidak mendengar kabar dari pengelola setelah memposting pesan di bawah ini, mohon tindak lanjuti dengan menggunakan link di sisi kiri halaman ini atau ikuti link ini untuk menghubungi pengelola. Jika Anda masih tidak mendengar apa-apa, ikuti proses triase paket. Beri tahu kami apa yang Anda sukai dari paket atau Perakit NetWide, atau beri tahu kami apa yang perlu ditingkatkan. Bagikan pengalaman Anda dengan paket, atau konfigurasi ekstra atau gotchas yang telah Anda temukan. Jika Anda menggunakan url, komentar akan ditandai untuk moderasi sampai Anda memasukkan daftar putih ke daftar putih. Disqus dimoderasi komentar disetujui pada jadwal mingguan jika tidak lebih cepat. Butuh waktu antara 1-5 hari agar komentar Anda muncul. Jadilah yang pertama mengetahui tentang fitur yang akan datang, rilis keamanan, dan berita tentang Chocolatey.The Netwide Assembler: NASM The Netwide Assembler, NASM, adalah perakit 80x86 yang dirancang untuk portabilitas dan modularitas. Ini mendukung berbagai format file objek, termasuk Linux a.out dan ELF, NetBSDFreeBSD, COFF, Microsoft 16-bit OBJ dan Win32. Ini juga akan menampilkan file biner polos. Sintaksnya dirancang agar sederhana dan mudah dimengerti, mirip dengan Intels namun kurang rumit. Ini mendukung opcode Pentium, P6 dan MMX, dan memiliki kemampuan makro. The Netwide Assembler tumbuh dari sebuah gagasan tentang comp.lang.asm.x86 (atau mungkin alt.lang.asm - saya lupa yang mana), yang pada dasarnya adalah bahwa tampaknya tidak ada assembler x86 seri bebas yang bagus, dan itu Mungkin seseorang harus menulisnya. A86 itu bagus, tapi tidak gratis, dan khususnya Anda tidak mendapatkan kemampuan 32-bit sampai Anda membayar. DOS nya saja juga. Gas gratis, dan port di DOS dan Unix, tapi tidak begitu bagus, karena didesain untuk menjadi back end ke gcc. Yang selalu memberi kode yang benar. Jadi pengecekan kesalahannya minimal. Juga, sintaksnya mengerikan, dari sudut pandang siapa pun yang mencoba menulis apa pun di dalamnya. Plus Anda cant menulis kode 16-bit di dalamnya (benar). as86 is Linux-specific, and (my version at least) doesnt seem to have much (or any) documentation. MASM isnt very good, and its expensive, and it runs only under DOS. TASM is better, but still strives for MASM compatibility, which means millions of directives and tons of red tape. And its syntax is essentially MASMs, with the contradictions and quirks that entails (although it sorts out some of those by means of Ideal mode). Its expensive too. And its DOS-only. So here, for your coding pleasure, is NASM. At present its still in prototype stage - we dont promise that it can outperform any of these assemblers. But please, please send us bug reports, fixes, helpful information, and anything else you can get your hands on (and thanks to the many people whove done this already You all know who you are), and well improve it out of all recognition. Lagi. Please see the file Licence. supplied as part of any NASM distribution archive, for the licence conditions under which you may use NASM. The current version of NASM (since 0.98) are maintained by H. Peter Anvin, hpazytor. If you want to report a bug, please read section 10.2 first. If you dont have Usenet access, or would rather be informed by e-mail when new releases come out, you can subscribe to the nasm-announce email list by sending an email containing the line subscribe nasm-announce to majordomolinux.kernel.org. If you want information about NASM beta releases, please subscribe to the nasm-beta email list by sending an email containing the line subscribe nasm-beta to majordomolinux.kernel.org. Once youve obtained the DOS archive for NASM, nasmXXX.zip (where XXX denotes the version number of NASM contained in the archive), unpack it into its own directory (for example c:nasm ). The archive will contain four executable files: the NASM executable files nasm.exe and nasmw.exe. and the NDISASM executable files ndisasm.exe and ndisasmw.exe. In each case, the file whose name ends in w is a Win32 executable, designed to run under Windows 95 or Windows NT Intel, and the other one is a 16-bit DOS executable. The only file NASM needs to run is its own executable, so copy (at least) one of nasm.exe and nasmw.exe to a directory on your PATH, or alternatively edit autoexec.bat to add the nasm directory to your PATH. (If youre only installing the Win32 version, you may wish to rename it to nasm.exe .) Thats it - NASM is installed. You dont need the nasm directory to be present to run NASM (unless youve added it to your PATH ), so you can delete it if you need to save space however, you may want to keep the documentation or test programs. If youve downloaded the DOS source archive, nasmXXXs.zip. the nasm directory will also contain the full NASM source code, and a selection of Makefiles you can (hopefully) use to rebuild your copy of NASM from scratch. The file Readme lists the various Makefiles and which compilers they work with. Note that the source files insnsa.c. insnsd.c. insnsi.h and insnsn.c are automatically generated from the master instruction table insns.dat by a Perl script the file macros.c is generated from standard.mac by another Perl script. Although the NASM 0.98 distribution includes these generated files, you will need to rebuild them (and hence, will need a Perl interpreter) if you change insns.dat. standard.mac or the documentation. It is possible future source distributions may not include these files at all. Ports of Perl for a variety of platforms, including DOS and Windows, are available from cpan.org. Once youve obtained the Unix source archive for NASM, nasm-X.XX.tar.gz (where X.XX denotes the version number of NASM contained in the archive), unpack it into a directory such as usrlocalsrc. The archive, when unpacked, will create its own subdirectory nasm-X.XX. NASM is an auto-configuring package: once youve unpacked it, cd to the directory its been unpacked into and type .configure. This shell script will find the best C compiler to use for building NASM and set up Makefiles accordingly. Once NASM has auto-configured, you can type make to build the nasm and ndisasm binaries, and then make install to install them in usrlocalbin and install the man pages nasm.1 and ndisasm.1 in usrlocalmanman1. Alternatively, you can give options such as --prefix to the configure script (see the file INSTALL for more details), or install the programs yourself. NASM also comes with a set of utilities for handling the RDOFF custom object-file format, which are in the rdoff subdirectory of the NASM archive. You can build these with make rdf and install them with make rdfinstall. if you want them. If NASM fails to auto-configure, you may still be able to make it compile by using the fall-back Unix makefile Makefile.unx. Copy or rename that file to Makefile and try typing make. There is also a Makefile.unx file in the rdoff subdirectory.
Trend-trading-technical-indicators
Counter-trend-forex-trading-with-td-sequential-setup