亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

linux內核學習---as86語法

系統 2394 0

as86(1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

名稱

as86 - as86-8086..80386處理器的匯編程序

?

概要格式
? ? ? as86 ?[-0123agjuw] ?[-lm[list]] ?[-n name] ?[-o obj] [-b[bin]] [-s sym]
? ? ? [-t textseg] src

?

? ? ? as86_encap prog.s prog.v [prefix_] [as86 options]

?

描述
? ? ?as86是8086..80386處理器下的匯編程序,它所采用的語法與Intel/MS采取的語法類似,而不同于廣泛運用于UNIX下的匯編語法(譯注,gas中的語法,AT&T匯編)

?

????命令行中的src參數可為'-',代表對標準輸入進行匯編。

?

????as86_encap是一個腳本,使用了as86匯編程序,并且把生成的二進制文件轉為一個C文件prog.v,用于被連接或者包含到程序里,例如引導塊安裝程序。prefix_參數定義一個加到源文件中所有定義的變量的前綴,缺省前綴是源文件名。...

?

選項
? ? ?-0?????以16位代碼段運行,當使用了高于8086指令集的指令時警告。

?

?????-1?????以16位代碼段運行,當使用了高于80186指令集的指令時警告。

?

?????-2?????以16位代碼段運行,當使用了高于80286指令集的指令時警告。

?

?????-3?????以32位代碼段運行,不對任何指令發出警告信息(就算使用了486或586的指令)

?

?????-a?????使匯編程序部分兼容于Minix asld.交換了[]與()的用法,并且改變了一些16位跳轉與調用的語法("jmp @(bx)"?就成了一個合法的指令)

?

?????-g?????僅僅把global符號寫入目標或者符號文件中

?

?????-j?????把所有短跳轉指令(譯注:8位跳轉稱為短跳轉)換成相似的16位或者32位跳轉。并且把16位條件轉移指令換為一個條件短轉移命令與一個無條件長跳轉組合

?

?????-O?????匯編程序會做幾遍額外的工作,以嘗試支持向前引用。最多30遍。不推薦使用

?

?????-l?????產生清單文件(list file),文件名寫在選項后

?

?????-m?????把宏展開后寫在清單文件里

?

?

?

?

?????-n?????把模塊名寫在選項之后(目標模塊,而非源文件)

?

?????-o?????生成目標文件,文件名寫在選項之后

?

?????-b?????生成純二進制文件,文件名寫在后面。這是一個沒有頭部的純二進制文件(譯注:類似Dos下的com和sys)如果沒有-s選項程序將會在內存地址0處開始執行

?

?????-s?????生成一個ASCII碼符號文件,文件名寫在選項后。很簡單就能將其轉換,用于與-b選項生成的二進制文件相關聯和封裝。如果二進制文件不從地址0處開始執行。那么符號文件表中前兩項分別代表起始地址與結束地址

?

?????-u?????假定未定義符號在未指定的段中被導入了

?

?????-w-????允許匯編程序輸出警告信息

?

?????-t n???把所有text段的數據放到段n+3中.

?

AS86? 資料
? ? ?? 特殊字符

?

? ? ?*????本行起始地址

?

?????;或!?注釋起始符,另外,在一行起始處的“unexpected”字符被認為是注釋(但是仍然會被顯示在終端上)

?

?????$??????16進制數的前綴, C風格的前綴,?比如0x1234,?也可以使用.

?

?????%??????2進制數的前綴.

?

?????#??????立即數的前綴.

?

?????[ ]????間接尋址運算符.

?

????????????與MASM不同,匯編程序沒有標識符的類型信息,每個標識符僅僅代表是一個段地址和偏移地址。[]與立即數操作與傳統匯編程序一致

?

?????????????例:

?

??????????????????mov?????ax,bx

?

??????????????????jmp?????bx

?

?????????????寄存器尋址, jmp指令把bx寄存器中的值拷到程序計數器中

?

??????????????????mov ax,[bx]

?

??????????????????jmp [bx]

?

?????????????簡單的寄存器間接尋址, jmp指令把bx寄存器值指向的內存單元的值拷到程序計數器中

?

??????????????????mov ax,#1234

?

?????????????立即數,?把1234賦值給ax寄存器

?

??????????????????mov ax,1234

?

??????????????????mov ax,_hello

?

??????????????????mov ax,[_hello]

?

?????????????直接尋址,內存地址1234處的存儲字賦給ax寄存器。注意第三個指令并不十分嚴格,只是為了與asld保持兼容所以保留(譯注:若想將_hello標識符表示的值作為立即數使用,需要加上#前綴?#_hello)

?

??????????????????mov ax,_table[bx]

?

??????????????????mov ax,_table[bx+si]

?

??????????????????mov eax,_table[ebx*4]

?

?

?

?

??????????????????mov ax,[bx+_table]

?

??????????????????mov ax,[bx+si+_table]

?

??????????????????mov eax,[ebx*4+_table]

?

?????????????變址尋址。兩種形式都可以,但是我認為第一種要更正確些,但是我往往用第二種形式:)

?

? ? ?? 條件判斷

?

? ? ? IF, ELSE, ELSEIF, ENDIF

?

?????????????數字比較

?

??????IFC, ELSEIFC

?

?????????????字符串比較?(str1,str2)

?

?

?

?

??????FAIL .FAIL

?

?????????????生成用戶錯誤

?

? ? ?? 段相關

?

? ? ? .TEXT .ROM .DATA .BSS
? ? ? ? ? ? ?設置當前段。可以在前面加上關鍵字.SECT

?

? ? ? LOC ? ?數字表示段?0=TEXT, 3=DATA,ROM,BSS, 14=MAX.??連接器設定的段順序現在是0,4,5,6,7,8,9,A,B,C,D,E,1,2,3.段?0?以及所有3以上的段都假設為text段。注意64K限制對3-14的段不適用。

?

? ?? ? 標識符類型定義

?

? ? ? EXPORT PUBLIC .DEFINE
? ? ? ? ? ? ?導出符號

?

? ? ? ENTRY ?強制連接器在a.out文件里包含這個特殊符號

?

? ? ? .GLOBL .GLOBAL
? ? ? ? ? ? ?將一個標識符定義為外部的,并且強制就算不使用,也必須導入

?

? ? ? EXTRN EXTERN IMPORT .EXTERN
? ? ? ? ? ? ?導入外部標識符列表

?

NB: bin格式的文件不支持外部變量(譯注:關于這些格式,推薦參考一下NASM的手冊。純C論壇上有中文的NASM手冊)

?

? ? ? .ENTER?標識出舊式bin格式(obs)的程序入口

?

? ? ?? 數據定義

?

? ? ? DB .DATA1 .BYTE FCB
? ? ? ? ? ? ?1字節的對象列表

?

? ? ? DW .DATA2 .SHORT FDB .WORD
? ? ? ? ? ? ?2字節的對象列表

?

? ? ? DD .DATA4 .LONG
? ? ? ? ? ? ?4字節的對象列表

?

? ? ? .ASCII FCC
? ? ? ? ? ?寫到輸出的Ascii碼字符串.

?

? ? ? .ASCIZ Ascii?寫到輸出的Ascii碼字符串,末尾添加nul

?

? ? ?? 空間定義

?

? ? ? .BLKB RMB .SPACE
? ? ? ? ? ? ?以字節為單位計算空間

?

? ? ? .BLKW .ZEROW
? ? ? ? ? ? ?以字為單位計算空間?(一字2字節)

?

? ? ? COMM .COMM LCOMM .LCOMM
? ? ? ? ? ? ?通用數據域定義

?

? ? ?? 其他實用偽指令

?

? ? ? .ALIGN .EVEN
? ? ? ? ? ? ?對齊

?

? ? ? EQU ? ?定義標識符(譯注:可參考NASM或者MASM的EQU)

?

? ? ? SET ? ?定義可重定義的標識符

?

? ? ? ORG .ORG
? ? ? ? ? ? ?定義匯編位置(譯注:即設置地址計數器的值,建議參考MASM的資料)

?

? ? ? BLOCK ?定義匯編位置并且把原來的匯編位置入棧

?

? ? ? ENDB ??回到剛才棧里記錄的匯編位置

?

? ? ? GET INCLUDE
? ? ? ? ? ? ?插入新文件?(no quotes on name)

?

USE16 [cpu]
? ? ? ??定義默認操作數大小為16位,參數表示程序代碼將會運行在什么樣的CPU的(86,186, 286,386,486,586)指令集上.使用了指定指令集之上的指令會產生警告信息

?

USE32 [cpu]
? ? ? ?定義默認操作數大小為32位,參數表示程序代碼將會運行在什么樣的CPU的(86,186,?????286,386,486,586)指令集上.使用了指定指令集之上的指令會產生警告信息

?

? ? ? END ? ?標識出本文件停止匯編的地方

?

? ? ? .WARN ?警告信息開關

?

? ? ? .LIST ?清單?on/off (1,-1)

?

? ? ? .MACLIST
? ? ? ? ? ? ?宏清單?on/off (1,-1)

?

? ? ?宏的使用形式如下

?

? ? ? ? ? MACRO sax
? ? ? ? ? ? ?mov ax,#?1
? ? ? ? ? MEND
? ? ? ? ? sax(1)

?

? ? ? 未實現/未使用的

?

? ? ? IDENT ?Define object identity string.

?

? ? ? SETDP ?Set DP value on 6809

?

? ? ? MAP ? ?Set binary symbol table map number.

?

? ? ? 寄存器
? ? ? ? ? ? ?BP BX DI SI
? ? ? ? ? ? ?EAX EBP EBX ECX EDI EDX ESI ESP
? ? ? ? ? ? ?AX CX DX SP
? ? ? ? ? ? ?AH AL BH BL CH CL DH DL
? ? ? ? ? ? ?CS DS ES FS GS SS
? ? ? ? ? ? ?CR0 CR2 CR3 DR0 DR1 DR2 DR3 DR6 DR7
? ? ? ? ? ? ?TR3 TR4 TR5 TR6 TR7 ST

?

? ? ? 操作數類型說明
? ? ? ? ? ? ?BYTE DWORD FWORD FAR PTR PWORD QWORD TBYTE WORD NEAR

?

? ? ? ? ? ? ?near和far關鍵字并沒有提供段間尋址編程的能力,所有”far”操作都是
? ? ? ? ? ? ?都是通過顯式地使用以下指令得到的:指令: jmpi, jmpf, callf, retf,?
?????????????等等. Near關鍵字可以被用來強制使用80386的16位條件跳轉指令.?
?????????????'Dword'和'word'?能控制遠跳轉和遠調用的操作數的大小

?

? ? ? 普通指令 .
? ? ? ? ? ? ?這些指令和其他8086匯編程序所提供的指令大體上差不多,(譯注:后面的
?????????????看不明白了.我的英語功底啊~555) the main exceptions being a few '
?????????????Bcc' (BCC, BNE,??BGE, ?etc) ?instructions which are shorthands f
?????????????or a short branch plus a long jump and 'BR' which is the longest
?????????????unconditional jump (16 or 32 bit).

?

? ? ?? 長分支
? ? ? ? ? ? ?BCC ?BCS ?BEQ ?BGE BGT BHI BHIS BLE BLO BLOS BLT BMI BNE BPC BPL
? ? ? ? ? ? ?BPS BVC BVS BR

?

? ? ?? 段間操作
? ? ? ? ? ? ?CALLI CALLF JMPI JMPF

?

? ? ? 段修飾符指令
? ? ? ? ? ? ?ESEG FSEG GSEG SSEG

?

? ? ? 字節操作指令
? ? ? ? ? ? ?ADCB ADDB ANDB CMPB DECB DIVB IDIVB IMULB ?INB ?INCB ?MOVB ?MULB
? ? ? ? ? ? ?NEGB ?NOTB ORB OUTB RCLB RCRB ROLB RORB SALB SARB SHLB SHRB SBBB
? ? ? ? ? ? ?SUBB TESTB XCHGB XORB

?

? ? ? 標準指令
? ? ? ? ? ? ?AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR BSWAP BT BTC ?BTR
? ? ? ? ? ? ?BTS CALL CBW CDQ CLC CLD CLI CLTS CMC CMP CMPS CMPSB CMPSD CMPSW
? ? ? ? ? ? ?CMPW CMPXCHG CSEG CWD CWDE DAA DAS DEC DIV DSEG ENTER ?HLT ?IDIV
? ? ? ? ? ? ?IMUL ?IN ?INC ?INS ?INSB INSD INSW INT INTO INVD INVLPG INW IRET
? ? ? ? ? ? ?IRETD J JA JAE JB JBE JC JCXE JCXZ JE JECXE JECXZ JG JGE JL ?JLE
? ? ? ? ? ? ?JMP ?JNA JNAE JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ
? ? ? ? ? ? ?JO JP JPE JPO JS JZ LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT
? ? ? ? ? ? ?LLDT ?LMSW ?LOCK ?LODB ?LODS ?LODSB ?LODSD LODSW LODW LOOP LOOPE
? ? ? ? ? ? ?LOOPNE LOOPNZ LOOPZ LSL LSS LTR MOV MOVS MOVSB MOVSD MOVSW MOVSX
? ? ? ? ? ? ?MOVW ?MOVZX ?MUL ?NEG NOP NOT OR OUT OUTS OUTSB OUTSD OUTSW OUTW
? ? ? ? ? ? ?POP POPA POPAD POPF POPFD PUSH PUSHA PUSHAD PUSHF PUSHFD RCL RCR
? ? ? ? ? ? ?REP REPE REPNE REPNZ REPZ RET RETF RETI ROL ROR SAHF SAL SAR SBB
? ? ? ? ? ? ?SCAB SCAS SCASB SCASD SCASW SCAW SEG SETA SETAE SETB SETBE ?SETC
? ? ? ? ? ? ?SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE
? ? ? ? ? ? ?SETNG SETNGE SETNL SETNLE SETNO ?SETNP ?SETNS ?SETNZ ?SETO ?SETP
? ? ? ? ? ? ?SETPE ?SETPO SETS SETZ SGDT SHL SHLD SHR SHRD SIDT SLDT SMSW STC
? ? ? ? ? ? ?STD STI STOB STOS STOSB STOSD STOSW STOW STR SUB TEST VERR ?VERW
? ? ? ? ? ? ?WAIT WBINVD XADD XCHG XLAT XLATB XOR

?

? ? ?? 浮點
? ? ? ? ? ? ?F2XM1 ?FABS ?FADD ?FADDP FBLD FBSTP FCHS FCLEX FCOM FCOMP FCOMPP
? ? ? ? ? ? ?FCOS FDECSTP FDISI FDIV FDIVP ?FDIVR ?FDIVRP ?FENI ?FFREE ?FIADD
? ? ? ? ? ? ?FICOM ?FICOMP ?FIDIV ?FIDIVR FILD FIMUL FINCSTP FINIT FIST FISTP
? ? ? ? ? ? ?FISUB FISUBR FLD FLD1 FLDL2E FLDL2T FLDCW FLDENV ?FLDLG2 ?FLDLN2
? ? ? ? ? ? ?FLDPI ?FLDZ ?FMUL ?FMULP ?FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE
? ? ? ? ? ? ?FNSTCW FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN ?FRNDINT ?FRSTOR
? ? ? ? ? ? ?FSAVE ?FSCALE ?FSETPM ?FSIN ?FSINCOS FSQRT FST FSTCW FSTENV FSTP
? ? ? ? ? ? ?FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM ?FUCOMP ?FUCOMPP ?FWAIT
? ? ? ? ? ? ?FXAM FXCH FXTRACT FYL2X FYL2XP1

linux內核學習---as86語法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本精品在线视频 | 操美女国产 | 久久久精品免费热线观看 | 欧美日韩亚洲综合在线一区二区 | 久久澡| 亚洲高清综合 | 韩国爱情片免费大全 | 99秒拍福利大尺度视频 | 成年人网站免费 | 在线成人爽a毛片免费软件 在线成人天天鲁夜啪视频 在线成人亚洲 | 成人影院高清在线观看免费网站 | 欧美日本一道免费一区三区 | 亚洲国产精品综合一区在线 | 日本中文字幕在线观看 | 亚洲综合精品成人 | 九九热久久免费视频 | 黄视频福利| 色中文字幕在线 | 国产成人精品一区二区视频 | 欧美特级大片 | 免费观看日本污污ww网站精选 | 国产成人亚洲精品久久 | 久久久久欧美精品 | 日韩爱爱 | 欧美一欧美一区二三区性 | 亚洲精品欧洲精品 | 久久综合久久鬼 | 欧美成人午夜免费完成 | 久久性| 午夜体验区 | 色播影院性播影院私人影吧 | 国产午夜精品视频 | 午夜精品福利视频 | 国产小视频在线观看免费 | 五月婷婷激情综合 | 国产一级αv片免费观看 | 奇米影视国产 | 亚洲视频在线观 | 亚洲精品一区二区三区在线看 | 国产一级毛片一区二区三区 | 久久99国产亚洲高清观看首页 |