標籤: 暫無標籤

1 AS86 -名稱

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

2 AS86 -概要格式

  as86 [-0123agjuw] [-lm[list]] [-n name] [-o obj] [-b[bin]] [-s sym]

  [-t textseg] src

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

3 AS86 -描述

  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

  

上一篇[ASC()]    下一篇 [擬人派]

相關評論

同義詞:暫無同義詞