|
WIM156 的設(shè)計(jì)是針對單芯片的初學(xué)者﹐它提供了一個(gè)簡單的使用環(huán)境﹐以及學(xué)習(xí) 環(huán)境。WIM156 軟件設(shè)備中包括兩個(gè)部分﹐第一個(gè)為組譯器﹔第二個(gè)為軟件仿真器。 上述兩個(gè)軟件設(shè)備是相輔相成的﹐并不能分開。當(dāng)使用者進(jìn)入WIM156 并叫出檔案之 后﹐WIM156 就完成組譯的動(dòng)作﹐并且已經(jīng)進(jìn)入仿真的功能了。 1. 指令型態(tài): WIM156 可以執(zhí)行 EM78156 & EM78P156 的 42 個(gè)指令,其寬度為 13 位。每一 個(gè)指令碼可切割成兩部份,第一部分為標(biāo)示指令形態(tài)的運(yùn)算碼( OPCODE ),第二 部份則指出運(yùn)算時(shí)所需之參數(shù),亦即操作數(shù)( OPERAND )。而指令之形態(tài)大致可分 為下列四種: (1)控制型指令( control operation ): 如 INT...等等。 (2)緩存器導(dǎo)向型指令( register oriented ): 如 MOV A, Reg_B ; move Reg_B to A ADD Reg_B, A ; add Reg_B with A, and ; save in Reg_B ... 等等。 (3)位導(dǎo)向型指令( bit oriented ): 如 BC,JBS...等等。 (4)常數(shù)型指令( constant operation ):如 MOV A, @0x55 ; move 0x55 to A XOR @0xFF ;Xor A with 0xFF 一般而言,EM78 系列八位微控制器一個(gè)指令只需兩個(gè)周期之外,其它的指令只 需一個(gè)指令周期,除了對 PC (Program Counter)做 “寫” 的指令,需二個(gè)指令周 期,如 (MOV PC, A)。 2. 語法說明: 以下就本編譯器之語法,作一詳盡介紹。 (1)鍵入格式
義隆電子公司EM78156 / EM78P156 單晶片軟體&硬體模擬器12 本編譯器并不對字之大寫或小寫作區(qū)別,如 "MOV", "Mov", "mOV",和 "MoV" 在解譯上是不做區(qū)別的。 (2)在常數(shù)之前請加小老鼠"@",其它如緩存器(r) 及位(b)之前則不加"@"。例如 MOV A, @0x55 ;add"@" before constant 0x55 BC 0x7, 0x4 ;no"@" before both register ;7 and bit4 SUB 0x10,A ;no"@" before register 0x10 (3)數(shù)字格式 a、十六進(jìn)制制之前先加 "0x",例如 0xA、 0x55、 0x11。PS 只處理二位。 b、十進(jìn)制制之前不加辨識字符。 (4)";" 請置于備忘陳述或批注之前。 例如 ;********************************** ;This is an example of how to write ;an EMC 8_bit program ;Date of programming: March 12, 1996 ;********************************** (5)"ORG" 定義起始地址。 其語法為 "ORG ADDR"。 例如 ORG 0x000 ;address begins from 0x000 NOP NOP : ORG 0x600 ;another address starts from 0x600 NOP NOP : (6)"==" 定義一代號值。其語法為“SYMBOL == K”,例如
義隆電子公司EM78156 / EM78P156 單晶片軟體&硬體模擬器 13 TCC ==0x01 PC ==0x02 BUFFER == 0x20 COUNTER == 0x21 ※ a、代號字符串長度不得大于11個(gè)字母。 b、定義代號不一定在程序一開始,只要在使用之前定義即可。 (7)緩存器導(dǎo)向型指令之語法可分為以下三類: a、直接對緩存器做運(yùn)算。其語法為"INST REG"。 例如 IOW 0x05 INC 0x10 DJZ 0x10 RRC 0x10 b、與 "A" 做運(yùn)算,結(jié)果存入 "A" 中。其語法為 "INST A, REG"。例如 MOV A, 0x15 AND A, 0x15 SUB A, 0x15 c、與 "A" 做運(yùn)算,結(jié)果存入緩存器中。其語法為 "INST REG, A"。例如 MOV 0x15, A AND 0x15, A SUB 0x15, A |