<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ASM-51宏匯編使用手冊(cè)信息表

          ASM-51宏匯編使用手冊(cè)信息表

          作者: 時(shí)間:2011-10-22 來源:網(wǎng)絡(luò) 收藏

          主要用來開發(fā)Inter8051系列單片機(jī),它具有宏處理,數(shù)據(jù)處理,列表處理和條件處理等多種功能。源程序的編寫完全采用 Inter標(biāo)準(zhǔn)助記符和行格式。在編寫程序過程中,可借助于文本編輯(Windows的記事本)或文字處理軟件Word等編輯, 經(jīng)匯編后生成列表輸出文件(.LST)和目標(biāo)代碼文件(.HEX)。 此目標(biāo)代碼文件(.HEX)可直接用CZS-51或MedWin、Keil、Debug8051進(jìn)行模擬/調(diào)試,或直接用于硬件仿真器上運(yùn)行。當(dāng)然,這也是要燒寫到單片機(jī)ROM中的代碼。

          1、 語言的基本語法

          1、1 的特點(diǎn)

          宏匯編完全支持Inter助記符的匯編語言,它含有宏語句,英文大小寫字母,變量名,標(biāo)號(hào)等不受限制,有二,十,十六進(jìn)制和串參數(shù)類型,有匯編控制指令和多層條件語句,程序邏輯分段, 還有模塊化程序設(shè)計(jì)的連接功能,匯編速度快等特點(diǎn)。

          1、2 匯編處理過程

          (1) 用行編輯EDLIN或文字處理軟件WS或全屏幕編輯軟件PE等,編輯宏匯編

          語言源程序,它的文件擴(kuò)展名為。ASM。

          (2) 用ASM-51宏匯編程序?qū)ι鲜鲈闯绦蛭募M(jìn)行匯編,產(chǎn)生擴(kuò)展名為.LST的列表輸出文件和擴(kuò)展名為.HEX的目標(biāo)代碼文件(.HEX)。 列表輸出文件包含源程序語句所匯編成的代碼,以及有關(guān)的地址,語句和符號(hào)表等。 目標(biāo)代碼文件包含源程序語句所匯編成的代碼, 不包含任何符號(hào)信息或助記符。 進(jìn)行模擬/調(diào)試,或直接用于硬件仿真器上運(yùn)行。

          1、3 語句

          匯編語言可分為兩類語句:指令性語句和指示性語句。

          (1)指令性語句

          這一類語句是指在匯編過程中能生成指令代碼的語句(如 MOV ,DEC等)。其格式為:

          [標(biāo)號(hào):] [指令助記符] [操作數(shù)] [;注釋]

          其中方括號(hào)[ ]中為選擇項(xiàng)。下同。

          (2)指示性語句

          這一類語句即通常所說的偽指令,它指示匯編程序后面的指示性語句如何產(chǎn)生代碼。

          ASM-51宏匯編完全支持Inter助記符的匯編語言,因此匯編程序的格式,指令完全與8051匯編語言一樣,這里不再介紹它們的指令系統(tǒng)。

          1、4 常量與數(shù)值運(yùn)算

          (1) 常量及其表示

          常量,就是在匯編時(shí)已經(jīng)確定的值。 在匯編語言中,常量主要用作指令性語句中的直接操作數(shù),也可用于存儲(chǔ)器操作的組成部分(如位移量),或者為偽指令中的變量輸初值。

          為便于程序設(shè)計(jì),常量有多種表示形式:二、十、十六進(jìn)制數(shù)和字符串等,它們的格式各不相同,并采用不同的基數(shù)標(biāo)記加以區(qū)分。表--1列出其格式。

          表--1

          數(shù)據(jù)形式 格 式 取值范圍 例 如 備 注

          2進(jìn)制 ********B 0,1 10011100B

          10進(jìn)制 ****** 0,1,2...9 45723 缺省基數(shù)標(biāo)記

          16進(jìn)制 ****H 0,1...E,F(xiàn) 0CDE3H 最前面一個(gè)字符應(yīng)是0--9

          ASCII '**' ASCII 'AD' 只有DB命令中使用

          常量以數(shù)值形式直接寫在匯編語言的語句中稱為字面常量, 若預(yù)先為它定義一個(gè)符號(hào)名,然后在語句中用符號(hào)名來表示該常量稱符號(hào)常量。使用符號(hào)常量的優(yōu)點(diǎn)可改善程序的可讀性,它的定義需要使用偽操作命令"EQU"或“=“。

          (2) 數(shù)值運(yùn)算

          宏匯編中,所有參數(shù)值均被認(rèn)為是整數(shù),并以16位的形式存放,表示的范圍是0---65535,所有算術(shù)操作均對(duì)整數(shù)以補(bǔ)碼形式運(yùn)算。

          (1) 基本運(yùn)算

          匯編語言對(duì)常量允許進(jìn)行算術(shù)運(yùn)算,邏輯運(yùn)算,分離運(yùn)算等三種類型的運(yùn)算。如表--2所示。

          表--2 基本運(yùn)算

          運(yùn) 算 操 作 含 義 以ADD為例

          算 + 加操作 ADD A,R1+36

          - 減操作 ADD A,R1-2EH

          * 乘操作 ADD A,R1*0E3H

          術(shù) / 除操作 ADD A,R1/23

          MOD 模除 ADD A,R1 MOD 12

          SHR 右移 ADD A,R1 SHR 3

          SHL 左移 ADD A,R1 SHL 2

          邏 AND 與操作 ADD A,R1 AND 10000101B

          OR 或操作 ADD A,R1 OR 00110000B

          XOR 異或操作 ADD A,R1 XOR 36H

          輯 NOT 非操作 ADD A, NOT 45H

          分 HIGH 高字節(jié)分離 ADD A, HIGH 05E2H

          離 LOW 低字節(jié)分離 ADD A, LOW 77F0H

          說明: R1為符號(hào)常量。

          (2) 綜合運(yùn)算

          綜合運(yùn)算規(guī)則 1: 計(jì)算表達(dá)式時(shí),所有的運(yùn)算全部從左到右順序進(jìn)行,遇到操作數(shù)就進(jìn)行運(yùn)算,不考慮優(yōu)先關(guān)系,括號(hào)有助于視覺理解,但不改變表達(dá)式的?計(jì)算順序。

          例如: R1 SET NOT(0C5FH OR 000CH)

          其結(jié)果應(yīng)為 0F3ACH。

          綜合運(yùn)算規(guī)則 2: 當(dāng)兩個(gè)操作數(shù)之間沒有參數(shù)相隔時(shí), 第二個(gè)操作符優(yōu)先于第一個(gè)操作符計(jì)算。

          例如: R1 SET NOT 10011010B

          其結(jié)果應(yīng)為 65H。

          1、5 程序分段

          8051系列的處理器的結(jié)構(gòu), 把內(nèi)存分成五個(gè)獨(dú)立的內(nèi)存段, 即代碼段(段名CSEG),數(shù)據(jù)段(段名DSEG), 外部段(段名XSEG), 功能段(段名FSEG)和位段(段名BSEG)等。 各個(gè)段在源程序中的次序可以任意,段的數(shù)目可以根據(jù)需要確定,原則上不受限制。程序中的所有段都必須用段名開頭,段結(jié)束語句ENDS結(jié)束。

          1、6 源文件

          源文件是由匯編語言代碼和匯編程序指令組成的 ASCII 字符文件, 擴(kuò)展名為。ASM。源文件的每一語句行,最多有四個(gè)域。每一行的長度不超過80個(gè)字符, 且以“回車“鍵結(jié)束。

          1、7 列表輸出文件和目標(biāo)代碼文件

          (1) 目標(biāo)代碼文件(.HEX)

          目標(biāo)代碼文件(.HEX)是ASCII文件,它只包含由各種程序語句所生成的代碼,而不包含任何信息或助記符。 該文件是能夠在處理器上運(yùn)行的實(shí)際機(jī)器指令碼。

          目標(biāo)代碼文件格式如下:

          :cc aaaa tt dd aa dd ss CR>

          計(jì)數(shù)器 數(shù)據(jù)類型 記錄地址 回車

          記錄地址 代碼的字節(jié) 和校驗(yàn)

          目標(biāo)代碼文件(.HEX)的每一行以一個(gè)冒號(hào)開始, 后面跟著的數(shù)字和符號(hào)分別表示十六進(jìn)制數(shù)據(jù)的計(jì)數(shù)器(cc),記錄第一個(gè)數(shù)據(jù)字節(jié)的16位地址(aaaa),目標(biāo)記錄的數(shù)據(jù)類型(tt),代碼的實(shí)際字節(jié)(dd),計(jì)數(shù)器從第一個(gè)數(shù)據(jù)字節(jié)到最后的所有字節(jié)值累加和的相反數(shù)即和校驗(yàn)(ss)等等。

          (2)列表輸出文件(.LST)

          列表輸出文件也是個(gè)ASCII文件,它由源程序和目標(biāo)代碼文件組成, 可作為程序文檔也可被打印。

          列表輸出文件是分頁顯示,打印的,其長度由缺省值或偽指令$PAGE決定。 每頁一開始指出匯編程序的類型,版本以及頁號(hào)等。

          2、 偽操作指令

          匯編語言中的指示性語句(偽指令),不象指令性語句會(huì)產(chǎn)生目標(biāo)代碼, 它主要是用來“控制指揮“匯編程序如何把指令性語句翻譯成目標(biāo)代碼。除本身偽指令申請(qǐng)分配一部分存貯空間作數(shù)據(jù)區(qū)和堆棧區(qū)外,不產(chǎn)生任何目標(biāo)代碼。

          按照它們的功能,大致分成七類: 符號(hào)定義偽操作,段定義偽操作,數(shù)據(jù)定義崐偽操作,列表偽操作,條件偽操作,宏處理偽操作以及其它操作等。如表--3所示。

          表--3 偽操作指令

          序號(hào) 分 類 偽 操 作 指 令

          1 符號(hào)定義偽操作 EQU,=,DATA,BYTE,WORD,BIT,SET

          2 段定義偽操作 ORG,END,CSEG,DSEG,XSEG,F(xiàn)SEG,ENDS

          3 數(shù)據(jù)定義偽操作 DB,DW,DS

          4 列表偽操作 $TITLE,$SUBTTL,$PAGE,$LIST,$NOLIST,$NOCODE

          5 條件偽操作 IF,ELSE,ENDIF

          6 宏處理偽操作 MACRO,ENDM

          7 其 它 ALTNAME,INCLUDE

          2、1 符號(hào)定義偽操作

          符號(hào)定義偽操作及其格式: 符號(hào)名 符號(hào)定義名 常量或表達(dá)式

          其中符號(hào)定義名可以為EQU,=,DATA,BYTE,WORD,BIT,SET等。下面就是這些符

          號(hào)定義偽操作的用法及說明。如表--4所示。

          表--4 符號(hào)定義偽操作

          符號(hào)定義名 用 法 說 明

          EQU 為常量,符號(hào)名等定義符號(hào)化常量名 符號(hào)名不能重名定義

          = 為常量,符號(hào)名等定義符號(hào)化常量名 符號(hào)名不能重名定義

          DATA 用來為一個(gè)字節(jié)類型的符號(hào)定值 符號(hào)名不能重名定義

          BYTE 用來為一個(gè)字節(jié)類型的符號(hào)定值 符號(hào)名不能重名定義

          WORD 用來為一個(gè)字類型的符號(hào)定值 符號(hào)名不能重名定義

          8051中沒有字操作

          BIT 用來定義一個(gè)字位類型

          SET 用來定義整數(shù)類型的符號(hào)名 符號(hào)名可重名定義

          DATA與BYTE的區(qū)別: DATA與BYTE是相類似的偽指令。 當(dāng)程序運(yùn)行到DATA偽指令定義的符號(hào)名時(shí),該符號(hào)名將被顯示;而由BYTE定義的符號(hào)名不被顯示。

          2、2 段定義偽操作

          (1) ORG 用于設(shè)置或改變程序計(jì)數(shù)器的值。

          其格式為: ORG 常數(shù)或表達(dá)式

          例如: ORG 0008H

          ORG $+5

          其中$表示程序計(jì)數(shù)器的當(dāng)前值。

          (2) END 表示源代碼結(jié)束。

          其格式為: END 常數(shù)或表達(dá)式

          匯編程序遇到END語句即停止運(yùn)行。 若程序中沒有END,則在匯編源程序時(shí)顯出錯(cuò)

          (3) 8051系列的處理器把內(nèi)存結(jié)構(gòu)分成五個(gè)段,代碼段CSEG,數(shù)據(jù)段DSEG,外部段XSEG,功能段FSEG和位段BSEG等,其用法及區(qū)別如 表--5所示。

          在匯編以上各段所定義的符號(hào)時(shí),系統(tǒng)根據(jù)符號(hào)所在不同段,賦與不同類型的字母,如表--6所示。

          2、3 數(shù)據(jù)定義偽操作

          數(shù)據(jù)定義偽操作格式:

          [ 標(biāo)號(hào): ] 數(shù)據(jù)定義名 [ 表達(dá)式1,表達(dá)式2,。。。 ]

          其中數(shù)據(jù)定義名可為DB,DW,DS等。

          如表--7所示,數(shù)據(jù)定義偽操作的含義及說明。

          表--5 段定義偽操作

          段 用 法 及 區(qū) 別

          代碼段(CSEG) 包含由處理器所執(zhí)行的程序。段名可缺省。有目標(biāo)代碼生成。

          數(shù)據(jù)段(DESG) 由內(nèi)部工作寄存器的處理器的RAM組成。用來對(duì)程序使用的數(shù)據(jù)地址賦符號(hào)名,大多以O(shè)RG,DATA,BYTE,WORD,EDNS等組成。 無目標(biāo)碼生成。

          外部段(XSEG) 由外部工作寄存區(qū)和RAM組成。使用方法同數(shù)據(jù)段。無目標(biāo)碼生成。

          功能段(FSEG) 由特殊寄存器位置組成(如:輸入/輸出部件,計(jì)時(shí)器,中斷控制和連續(xù)的寄存器部件接口等)。無目標(biāo)代碼生成。

          位 段(BSEG) 由一些獨(dú)立的位組成,可以用布爾函數(shù)實(shí)現(xiàn)。 該段地址被解釋為位地址。無目標(biāo)代碼生成。

          表--6 程序分段的類型符號(hào)

          段 標(biāo)號(hào)(Label) 字節(jié)型操作數(shù)(Byte) 字型操作數(shù)(Word)

          代碼段CSEG L D W

          數(shù)據(jù)段DSEG D D W

          外部段XSEG X X E

          功能段FSEG F F G

          位 段BSEG B B B

          說明: (1)在不同的段中類型符號(hào)不同;

          (2)字節(jié)型操作數(shù)(Byte)一般通過DATA指令賦給符號(hào); 字型操作數(shù)

          一般通過WORD指令賦給符號(hào);

          (3)如果各段中用BYTE賦值,則在各段中符號(hào)全以S表示;在SIM51模

          擬/調(diào)試中的符號(hào)區(qū)顯示功能中,對(duì)BYTE賦值的將被跳過。

          (4)在各段中,位類型可以用BIT指令賦給。

          表--7 數(shù)據(jù)定義偽操作

          數(shù)據(jù)定義名 含 義 說 明

          DB 用于定義一個(gè)字節(jié)包含的值 表達(dá)式不是字符串時(shí),每個(gè)表達(dá)式賦給一個(gè)字節(jié),是字符串時(shí),用單引號(hào) “ ' “ 作為分隔符。

          DW 用于定義一個(gè)字(16位) 每個(gè)表達(dá)式占16位。 如果表達(dá)式中的存貯內(nèi)容為字符串,只取最后兩個(gè)字符。若字符串只有一個(gè)字符,高字節(jié)置“0“。

          DS 定義一個(gè)存貯區(qū) 通常用在代碼段中,作為程序的一部分。若用在數(shù)據(jù)段,外部段,則作為位置標(biāo)志使用。

          表--8 列表偽操作

          偽指令 含義及格式 說 明

          $TITLE 給源程序指定一個(gè)標(biāo)題 標(biāo)題不加 “ “,其最大長度

          格式: $TITLE [標(biāo)題行] 60個(gè)字符。若標(biāo)題行省略, 原來定義的標(biāo)題行作廢。

          $SUBTTL 給源程序指定一個(gè)副標(biāo)題 副標(biāo)題不加 “ “,其最大長

          格式: $SUBTTL [副標(biāo)題行] 度60字符。若副標(biāo)題行省略,原來定義的副標(biāo)題行作廢。

          $PAGE 用于形成或定義新的一頁或行數(shù) 匯編時(shí)頁長為66行(適合于格式: $PAGE [表達(dá)式] 標(biāo)準(zhǔn)打印紙)。表達(dá)式最大為65535,最小為12, 表達(dá)式缺省,則從新的一頁開始。

          $LIST 使源程序匯編時(shí),產(chǎn)生程序清單 匯編時(shí)無此指令照樣產(chǎn)生清單。

          格式: $LIST

          $NOLIST 使源程序匯編時(shí)不產(chǎn)生程序清單

          格式: $NOLIST

          $NOCODE 源程序匯編時(shí),條件匯編程序值 沒有此指令匯編時(shí),不論其值是為假的不產(chǎn)生清單。真、假的條件都不產(chǎn)生目標(biāo)碼。

          格式: $NOCODE

          2、4 列表偽操作

          如表--8所示,列表偽操作的含義,格式及說明。

          2、5 條件偽操作

          條件偽操作格式:

          IF 表達(dá)式

          [ 程序塊1 ]

          [ ELSE ]

          [ 程序塊2 ]

          ENDIF

          當(dāng)IF指令中的表達(dá)式為真時(shí),被匯編的代碼段是程序塊1;當(dāng)IF指令中的表達(dá)式為假時(shí),被匯編的代碼段是程序塊2。 在一個(gè)條件結(jié)構(gòu)中,僅有一個(gè)代碼段被匯編,其它的則被忽略。

          2、6 宏處理操作

          在源程序中,如果有一段程序需要多次使用,為使程序不重復(fù)書寫這段程序,可用宏定義把所需要重復(fù)出現(xiàn)的程序塊定義成宏指令,此后在宏指令出現(xiàn)的地方,宏匯編程序總是自動(dòng)地把它們替換成相應(yīng)的代碼段。

          (1) 宏指令格式

          [ 宏指令名 ] MACRO [形式參數(shù),。。。]

          代碼段

          ENDM

          在宏定義中,使用了“形式參數(shù)“,它們引用宏指令時(shí)被給出的一些名字或數(shù)值(實(shí)在參數(shù))所替換。使用形式參數(shù)給宏指令帶來了很大的靈活性。

          (2)宏調(diào)用格式

          [ 宏指令名 ] [實(shí)在參數(shù),。。。]

          注意:1、當(dāng)有兩個(gè)以上的實(shí)參數(shù)時(shí),它們之間要用逗號(hào),空格或列表符隔開。
          2、實(shí)參數(shù)項(xiàng)將對(duì)應(yīng)替換宏指令中形式參數(shù)。如果形式參數(shù)為標(biāo)號(hào)時(shí),則在宏調(diào)用中,實(shí)參也應(yīng)為標(biāo)號(hào),且要求實(shí)參是唯一的。如果宏定義中有自己的標(biāo)號(hào),則在宏調(diào)用時(shí),匯編程序自動(dòng)地把標(biāo)號(hào)變成唯一的標(biāo)號(hào)。

          2、7 其他

          (1) 替換名 ALTNAME

          功能: 這一偽指令用來自定義名字,以替換源程序中原來的保留字,替換的保留字均可等效地用于子程序中。

          格式: ALTNAME 保留字 自定義名

          注意: 自定義名與保留字之間首字符必須相同。

          (2) 附加文件的鏈結(jié) INCLUDE

          功能: 利用此偽指令可將一個(gè)源文件插入到當(dāng)前源文件中一起匯編,最終成為一個(gè)完整的源程序。

          格式: INCLUDE [ 驅(qū)動(dòng)器名: ] [ 路徑名 ] 文件名

          注意:1、文件名中若沒有擴(kuò)展名,則系統(tǒng)默認(rèn)是。ASM(該文件必須是能打開的)。

          2、被插入的源程序中不能包含END偽指令,否則匯編會(huì)停止運(yùn)行。被鏈接文件的每一行,在程序清單中以“I“開頭。

          3、鏈接偽指令可有8級(jí)嵌套, 若要求嵌套的多, 則要修改 DOS 中的

          CONFIG。SYS文件的FILES參數(shù)。

          3 宏匯編運(yùn)行

          3、1 系統(tǒng)運(yùn)行環(huán)境

          ASM-51宏匯編要在IBM-PC及其兼容機(jī)上運(yùn)行(至少128K字節(jié)的RAM);具有一個(gè)軟驅(qū)動(dòng)器或硬驅(qū)動(dòng)器,采用ANSI標(biāo)準(zhǔn)終端(包括鍵盤,顯示控制器,打印機(jī),至少一個(gè)RS-232異步通訊接口)。軟件有PC-DOS,MS-DOS 2。0 以上版本,ASM_51系統(tǒng)。

          3、2 宏匯編程序的運(yùn)行

          以 8051 宏匯編為例,在DOS系統(tǒng)的提示符下鍵入

          A> ASM51 文件名。ASM CR>

          等錯(cuò)誤的個(gè)數(shù)出現(xiàn)后 ,鍵入 CR> 變返回到DOS提示符下。8051的宏匯編與此相似。

          4 匯編的使用

          使用ASM-51宏匯編是將8051源程序匯編生成列表輸出文件和目標(biāo)代碼文件,供模擬/調(diào)試時(shí)使用。我們使用的宏匯編完全采用Inter標(biāo)準(zhǔn)助記符和行格式,因此在編寫源程序時(shí),可以使用宏匯編中的偽指令, 以增加源程序的運(yùn)行速度和可讀性。也可以直接用 Inter 標(biāo)準(zhǔn)助記符來編寫源程序。再經(jīng)過ASM-51宏匯編進(jìn)行匯編,便可得到列表輸出文件和目標(biāo)代碼文件。

          匯編的格式如下:

          > ASM51 文件名。ASM [ 可選項(xiàng) ]

          其中可選項(xiàng)為: /L, /H, /S, /P, /N

          /L 表示源程序匯編后不生成列表冊(cè)輸出文件(.LST),只顯示在屏幕上。

          /H 表示源程序匯編后不生成目標(biāo)代碼文件(.HEX)。

          /S 表示源程序匯編后不生成符號(hào)表。

          /P 表示源程序匯編后生成符號(hào)表。

          /N 表示源程序匯編后,程序是連續(xù)的顯示。

          如果沒有選擇項(xiàng),則表示產(chǎn)生列表輸出文件和目標(biāo)代碼文件,且在LST文件后面列出符號(hào)表。 生成的目標(biāo)代碼便可以進(jìn)行模擬/調(diào)試,如果在模擬/調(diào)試中發(fā)現(xiàn)錯(cuò)誤,則源程序要經(jīng)過修改,重新匯編,然后再進(jìn)行模擬/調(diào)試,直到完全正確。

          若程序匯編過程中有錯(cuò)誤,則給出出錯(cuò)信息(出錯(cuò)信息見附錄)。 生成的目標(biāo)代碼可以進(jìn)行模擬/調(diào)試/燒寫。

          附錄 ASM-51 匯編出錯(cuò)信息表

          1 Address Out of Range 一個(gè)被計(jì)值的目標(biāo)地址超出了當(dāng)前語句的范圍。

          2 Badly Formed Argument 數(shù)字規(guī)定的類型中有非法數(shù)字存在。

          3 Illefal Equale 有不允許的類型約定。

          4 Label Name Conflicts With Symbol Name 在程序中有兩個(gè)符號(hào)相同。

          5 Label Address Changed On Pass 2。 源程序在此錯(cuò)誤之前,還有一些錯(cuò)誤。

          6 Missing Argument in Expression 表達(dá)式中算術(shù)運(yùn)算符后面沒有操作數(shù)。

          7 Missing END Statrment 匯編的源程序結(jié)尾未發(fā)現(xiàn)END語句。

          8 Multiply Defined Label 源程序中定義了兩個(gè)標(biāo)號(hào)。

          9 Unbalanced Parentheses 表達(dá)式中多余或缺少括號(hào)。

          10 Undefined Symbol 語句中的符號(hào)名可能拼錯(cuò)或未被定義。

          11 Unrecognized Statemen or Undefined Argument 未定義參數(shù)的指令或代碼。

          12 Value Out of Range 有一個(gè)非法的值來說明一個(gè)有著可能值限制的語句。



          關(guān)鍵詞: ASM-51 宏匯編

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();