|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
IA32 Assembler |
| 作者:abcabcabc 欄目:嵌入式系統(tǒng) |
上傳到ftp://ftp.21ic.com.cn xx86 是16位x86匯編語言編譯器,生成16/32位二進(jìn)制機(jī)器代碼,運(yùn)行在實(shí)模式下, 語法基本與Netwide Assembler類似。 支持 條件編譯: ifdef ifndef endif 支持 MMX SSE SSE2 SSE3 指令集 不支持 include預(yù)處理指令 命令行格式:xx86 源文件 二進(jìn)制文件 偽指令: db - 定義1個(gè)字節(jié)數(shù)據(jù) db 1, 2, 1 + 2, 3 + label_01, 10 * 4 dw - 定義2個(gè)字節(jié)數(shù)據(jù) dw 1, 2, 1 + 2, 3 + label_01, 10 * 4 dd - 定義4個(gè)字節(jié)數(shù)據(jù) dd 1, 2, 1 + 2, 3 + label_01, 10 * 4 resb n - 保留n個(gè)字節(jié)未初始化數(shù)據(jù) [ resb 100 ] 可在一條指令中同時(shí)指定db dw dd 偽指令。例如: db 100 dw 1000 操作數(shù)大小: byte - 1個(gè)字節(jié) cmp byte [ebp+eax*8+1234],100 word - 2個(gè)字節(jié) mov dx,word [bp+4] dword - 4個(gè)字節(jié) and edx,dword [esp+ebx+5678] qword - 8個(gè)字節(jié) movq mm0,qword [ebx] tword - 16個(gè)字節(jié) addps tword [ebp+8],xmm7 尋址方式: SHORT - 8位 ja SHORT label01 near - 16位 jnb near label02 far - 32位 jne far label03 系統(tǒng)指令: equ或= - 定義標(biāo)簽值 [ label_01 equ 1234 ], 標(biāo)簽label_01的值為1234 org - 設(shè)定程序起點(diǎn) [ org 100h ], 設(shè)定程序起點(diǎn)為100h times - 指定重復(fù)生成當(dāng)前指令代碼的次數(shù) [ times 10 db 'ABCD' ] bits16 - 生成16位代碼 bits32 - 生成32位代碼 常量: 支持2,8,10,16進(jìn)制整型;32位單精度浮點(diǎn) 格式: 0x12, 12h ;十六進(jìn)制 12 ;十進(jìn)制 12o ;八進(jìn)制 1010B ;二進(jìn)制 "abc" ;文本串 'abc' ;文本串 12345.6789E10 ;32位單精度浮點(diǎn) EIP: 當(dāng)前EIP值用'$'符號表示。例如:MOV AX,$ ;將EIP低16位存入AX寄存器 操作符: ~ 取補(bǔ) 高優(yōu)先級 * / % 乘 除 求余 + - 加 減 & | ^ 位與,位或,位異或 << >> 移位 低優(yōu)先級 有效地址格式: [bx] [bx+1] [bx+si] [bx+si+1] [eax] [eax+1] [ebx*4] [ebx+8+1234] [eax+ebx+1] [eax+ebx*2] [eax+ebx*2+1] [123] 指定8位偏移值 [byte bx+1] 指定16位偏移值 [word bx+1] 指定32位偏移值 [dword ebx+esi*8+1000] 指定段前綴 [es: bx+si+100] 指定32位偏移值及段前綴 [dword fs:eax+edi*4] 所有指令的操作數(shù)均按照INTEL(c)IA32指令集參考來定義,某些指令不能指定內(nèi)存操作數(shù)的大小 例如:lds dx,[SrcFH] Jcc指令默認(rèn)為有符號8位跳轉(zhuǎn)(-128/127),16位,32位跳轉(zhuǎn)要指定near或far尋址方式 例如: label01: mov ax,dx ... cmp [bx],-1 jne label01 ... cmp dx,100 ja near label01 Jmp指令格式: jmp label01 jmp SHORT label02 jmp near label03 jmp far label04 jmp bx jmp edx &nbs |
| 2樓: | >>參與討論 |
| 作者: enruan 于 2005/1/5 12:36:00 發(fā)布:
樓主很猛啊 |
|
| 3樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/5 13:33:00 發(fā)布:
也不是啦,可以寫arm 51系列,或者自定義也可以 |
|
| 4樓: | >>參與討論 |
| 作者: csword 于 2005/1/6 13:58:00 發(fā)布:
分享源碼來娛樂下大眾啦.哈哈 |
|
| 5樓: | >>參與討論 |
| 作者: enruan 于 2005/1/6 14:11:00 發(fā)布:
是啊 |
|
| 6樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/6 15:45:00 發(fā)布:
還沒有搞到空間 寫得很垃圾拉,給各位見笑了,我過幾天搞個(gè)空間上傳一下。 |
|
| 7樓: | >>參與討論 |
| 作者: fjlypp 于 2005/1/6 19:18:00 發(fā)布:
大俠 你搞X86用什么工具啊? 我在抄一塊用am186的控制板 想分析它的程序但不懂怎么拼接用什么工具反匯編 能教教我嗎? |
|
| 8樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/7 0:33:00 發(fā)布:
我用x86匯編寫的。 * - 本貼最后修改時(shí)間:2005-1-19 19:53:40 修改者:abcabcabc |
|
| 9樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/12 16:34:00 發(fā)布:
上傳了 http://www.golfingworld.net/xx86.txt http://www.golfingworld.net/xx86.com http://www.golfingworld.net/xx86.zip 下載地址如上 |
|
| 10樓: | >>參與討論 |
| 作者: crazyeda 于 2005/1/12 22:05:00 發(fā)布:
是挺猛,你是做作業(yè)還是公司要求的 |
|
| 11樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/13 0:38:00 發(fā)布:
不是做作業(yè)的,也不是公司要求 * - 本貼最后修改時(shí)間:2005-1-19 19:55:14 修改者:abcabcabc |
|
| 12樓: | >>參與討論 |
| 作者: su_mj000 于 2005/1/13 8:48:00 發(fā)布:
如果寫Assembler或Compiler之類的軟件 一般都得使用flex(lex)和bison(yacc)作為工具(都是免費(fèi))。 否則,含各類運(yùn)算的表達(dá)式如何處理,如 mov ax, 100 + (200 >> 2) |
|
| 13樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/13 17:33:00 發(fā)布:
補(bǔ)上了32位IEEE754浮點(diǎn)數(shù)支持,修正了錯(cuò)誤 mov ax, 100 + (200 >> 2) 這個(gè)支持。 除了浮點(diǎn)數(shù)不能作為操作數(shù)運(yùn)算之外,整型的都可以。 例如 200>>-2 等于 200<<2 |
|
| 14樓: | >>參與討論 |
| 作者: enruan 于 2005/1/15 14:47:00 發(fā)布:
沒有源碼嗎? |
|
| 15樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/19 1:37:00 發(fā)布:
加上mmx sse sse2 sse3指令集 |
|
| 16樓: | >>參與討論 |
| 作者: enruan 于 2005/1/19 18:41:00 發(fā)布:
加油啊 期待用國產(chǎn)的編譯器和匯編器 對了,你不會是完全自立更生了吧 你不會是用匯編寫的,然后用自己的assembler匯編的吧? |
|
| 17樓: | >>參與討論 |
| 作者: abcabcabc 于 2005/1/19 20:10:00 發(fā)布:
是用自己的assembler編譯的 語法結(jié)構(gòu)我用了nasm的格式,開始的時(shí)候用nasm來編譯,后來自己可以編譯自己的源代碼,F(xiàn)在用nasm來編譯也不行了,已經(jīng)out of MEMORY。 |
|
| 18樓: | >>參與討論 |
| 作者: enruan 于 2005/1/19 20:16:00 發(fā)布:
哈哈,帥哥,你好強(qiáng)啊 |
|
| 19樓: | >>參與討論 |
| 作者: enruan 于 2005/1/19 20:20:00 發(fā)布:
那你是用匯編寫的嘍? 還是C(不會還有別的吧,哈)寫的然后生成的匯編? |
|
| 20樓: | >>參與討論 |
| 作者: enruan 于 2005/1/31 10:58:00 發(fā)布:
我頂. |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |