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

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條評論
主站蜘蛛池模板: a在线观看视频 | 日本sese | 亚洲综合爱爱久久网 | 欧美日韩福利视频一区二区三区 | 亚洲精品国产一区二区三区在 | 欧美视频免费在线播放 | 94久久国产乱子伦精品免费 | 欧美精品a毛片免费观看 | 五月网婷婷| 国产日韩欧美一区 | 亚洲国产精品久久婷婷 | 99热只有精品一区二区 | 久青草视频97国内免费影视 | 国产五月天在线 | 亚洲精品色一区二区三区 | 欧美在线一区二区三区精品 | 天天夜夜人人 | 日韩精品久久久毛片一区二区 | 久久99热只有视精品6国产 | 久久黄色录像 | 天天久久综合网站 | 日韩 欧美 亚洲 中文字幕 | 成人99国产精品一级毛片 | 7777奇米| 精品视频网| 日韩中文字幕精品免费一区 | 色综合夜夜嗨亚洲一二区 | 国产精品合集一区二区 | 天天骑夜夜操 | 99久久国内精品成人免费 | 久久免费精品一区二区 | 青草五月天 | 狠狠操91| 日本午夜www高清视频 | 天天操综合 | 四虎hk网址| 99精品视频在线观看 | 久久青草精品一区二区三区 | 亚洲成人免费观看 | 亚洲伊人tv综合网色 | 另类尿喷潮videofree |