freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

匯編語(yǔ)言程序設(shè)計(jì)-展示頁(yè)

2024-08-19 17:41本頁(yè)面
  

【正文】 基本結(jié)構(gòu) 分支偽指令的具體格式如下: 格式 1: .IF condition 指令序列 .ENDIF 格式 2: .IF condition 指令序列 1 .ELSE 指令序列 2 .ENDIF 格式 3: .IF condition1 指令序列 1 .ELSEIF condition2 指令序列 2 .ENDIF 其中:條件表達(dá)式“ condition”的書(shū)寫(xiě)方式與 C語(yǔ)言中條件表達(dá)式的書(shū)寫(xiě)方式相似,也可用括號(hào)來(lái)組成復(fù)雜的條件表達(dá)式。 else a = 21。amp。 例 把下列 C語(yǔ)言的語(yǔ)句改寫(xiě)成等價(jià)的匯編語(yǔ)言程序段 (不考慮運(yùn)算中的溢出 )。 例 編寫(xiě)一程序段,計(jì)算下列函數(shù)值。 A←(X Y+24)/Z的商, B←(X Y+24)/Z的余數(shù) 其中:變量 X和 Y是 32位有符號(hào)數(shù),變量 A, B和 Z是 16位有符號(hào)數(shù)。另外,在編程序時(shí),還要妥善保存已得到的處理結(jié)果,為后面的進(jìn)一步處理直接提供前面的處理結(jié)果,從而避免不必要的重復(fù)操作。 用高級(jí)語(yǔ)言編寫(xiě)程序時(shí) , 由于不使用 “ 轉(zhuǎn)移語(yǔ)句 ” 而使這三種結(jié)構(gòu)清晰明了 。 第 6章 程序的基本結(jié)構(gòu) 順序結(jié)構(gòu) 在學(xué)習(xí)高級(jí)語(yǔ)言程序設(shè)計(jì)時(shí) , 我們知道了程序的三大主要結(jié)構(gòu):順序結(jié)構(gòu) 、 分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu) 。 偽指令 END后面可附帶一個(gè)在程序中已定義的標(biāo)號(hào),該標(biāo)號(hào)指明程序的啟動(dòng)位置。中斷 21H的 9H號(hào)功能,顯示 DS:DX指向的字符串 MOV AX, 4C00H INT 21H CODE1 ENDS END START 。定義數(shù)據(jù)段 DATA1 MSG DB “Hello, World.$” DATA1 ENDS CODE1 SEGMENT 。 第 6章 程序的基本結(jié)構(gòu) 源程序的結(jié)構(gòu) 例 :在屏幕上顯示字符串“ Hello, World.” STACK1 SEGMENT STACK 。定義一個(gè)堆棧段,其段名為 STACK1 DB 256 DUP(?) STACK1 ENDS 上述段定義說(shuō)明了該段是堆棧段,系統(tǒng)會(huì)自動(dòng)把段寄存器 SS和棧頂寄存器 SP與該堆棧段之間建立相應(yīng)的關(guān)系,并設(shè)置其初值,而不用在代碼段對(duì)它們進(jìn)行賦值。給堆棧段的棧頂寄存器 SP賦初值 STI 。可在代碼段的段指定語(yǔ)句中一起說(shuō)明 CLI 。 在源程序中,還要添加如下程序段,才能把段 Stack1當(dāng)作堆棧段來(lái)使用。 方法 1: Stack1 SEGMENT DB 256 DUP(?) 。⑦ INT 21H 。⑥ MOV AX, DATA3 MOV DS, AX MOV BL, byte2 。訪問(wèn)段 DATA1中的字變量 word1 MOV word2, AX 。④ MOV ES, AX 。② MOV DS, AX 。編寫(xiě)代碼段 CODE1 ASSUME CS:CODE1, DS:DATA1, ES:DATA2 。定義數(shù)據(jù)段 DATA2 word2 DW 1234h word3 DW 9876h DATA2 ENDS DATA3 SEGMENT 。 DATA1 SEGMENT 。 在代碼段的其它位置,還可以用另一個(gè) ASSUME語(yǔ)句來(lái)改變前面 ASSUME語(yǔ)句所說(shuō)明的對(duì)應(yīng)關(guān)系,這樣,代碼段中的指令就用最近的 ASSUME語(yǔ)句所建立的對(duì)應(yīng)關(guān)系來(lái)確定指令中的有關(guān)信息。下面語(yǔ)句說(shuō)明了段寄存器 ES不與某段相對(duì)應(yīng)。 例如, ASSUME CS:CODE1, DS:DATA1 說(shuō)明了: CS對(duì)應(yīng)于代碼段 CODE1, DS對(duì)應(yīng)于數(shù)據(jù)段 DATA1。調(diào)用 DOS功能,結(jié)束程序的運(yùn)行 CODE1 ENDS 第 6章 程序的基本結(jié)構(gòu) 段寄存器的說(shuō)明語(yǔ)句 在匯編語(yǔ)言源程序中可以定義多個(gè)段,每個(gè)段都要與一個(gè)段寄存器建立一種對(duì)應(yīng)關(guān)系。把數(shù)據(jù)段 DATA1的段值送 AX MOV DS, AX 。 在通常情況下,一個(gè)段的長(zhǎng)度不能超過(guò) 64K,在 80386及其以后系統(tǒng)的保護(hù)方式下,段基地址是 32位,段的最大長(zhǎng)度可達(dá) 4G??蛇x項(xiàng)“對(duì)齊類(lèi)型”、“組合類(lèi)型”和“類(lèi)別”的說(shuō)明作用請(qǐng)見(jiàn) 。段定義的一般格式如下: 段名 SEGMENT [對(duì)齊類(lèi)型 ] [組合類(lèi)型 ] [類(lèi)別 ] … 。匯編語(yǔ)言程序設(shè)計(jì) 第 6章 程序的基本結(jié)構(gòu) 段的定義 在定義段時(shí),每個(gè)段都有一個(gè)段名。在取段名時(shí),要取一個(gè)具有一定含義的段名。段內(nèi)的具體內(nèi)容 段名 ENDS 其中:“段名”必須是一個(gè)合法的標(biāo)識(shí)符,前后二個(gè)段名要相同。 段的長(zhǎng)度是指該段所占的字節(jié)數(shù): ?如果段是數(shù)據(jù)段,則其長(zhǎng)度是其所有變量所占字節(jié)數(shù)的總和; ?如果段是代碼段,則其長(zhǎng)度是其所有指令所占字節(jié)數(shù)的總和。 源程序的基本組成 第 6章 程序的基本結(jié)構(gòu) 一個(gè)數(shù)據(jù)段的定義例子: DATA1 SEGMENT word1 DW 1, 9078H, ? byte1 DB 21, ?World? DD 12345678H DATA1 ENDS 一個(gè)代碼段的例子: CODE1 SEGMENT MOV AX, DATA1 。把 AX的值送給 DS,即: DS存儲(chǔ)數(shù)據(jù)段的段值 … MOV AX, 4C00H INT 21H 。建立這種對(duì)應(yīng)關(guān)系的說(shuō)明語(yǔ)句格式如下: ASSUME 段寄存器名 :段名 [, 段寄存器名 :段名 , ……] 其中:段寄存器是 CS、 DS、 ES、 SS、 FS和 GS,段名在段定義語(yǔ)句說(shuō)明。 在 ASSUME語(yǔ)句中,還可以用關(guān)鍵字 NOTHING來(lái)說(shuō)明某個(gè)段寄存器不與任何段相對(duì)應(yīng)。 ASSUME ES:NOTHING 在通常情況下,代碼段的第一條語(yǔ)句就是用 ASSUME語(yǔ)句來(lái)說(shuō)明段寄存器與段之間的對(duì)應(yīng)關(guān)系。 第 6章 程序的基本結(jié)構(gòu) 例 :匯編語(yǔ)言段及其段說(shuō)明語(yǔ)句的作用。定義數(shù)據(jù)段 DATA1 word1 DW 5678h byte1 DB “ABCDEFG” DATA1 ENDS DATA2 SEGMENT 。定義數(shù)據(jù)段 DATA3 byte2 DB ? DATA3 ENDS 第 6章 程序的基本結(jié)構(gòu) CODE1 SEGMENT 。① MOV AX, DATA1 。③ MOV AX, DATA2 。⑤ … MOV AX, word1 。訪問(wèn)段 DATA2中的字變量 word2 … ASSUME DS:DATA3, ES:NOTHING 。訪問(wèn)段 DATA3中的變量 byte2 … MOV AX, 4C00H 。⑧ CODE1 ENDS 第 6章 程序的基本結(jié)構(gòu) 堆棧段的說(shuō)明 在源程序中,可用以下方法來(lái)定義堆棧段。256是堆棧的長(zhǎng)度,可根據(jù)需要進(jìn)行改變 TOP LABEL WORD Stack1 ENDS 由于堆棧是按地址從大到小的存儲(chǔ)單元順序來(lái)存放內(nèi)容的,所以,在堆棧存儲(chǔ)單元說(shuō)明語(yǔ)句之后,再說(shuō)明一個(gè)棧頂別名,這樣,對(duì) SP的賦值就很方便。 … ASSUME SS:STACK1 。禁止響應(yīng)可屏蔽中斷 MOV AX, STACK1 MOV SS, AX MOV SP, offset TOP ?;謴?fù)響應(yīng)可屏蔽中斷 … 第 6章 程序的基本結(jié)構(gòu) 方法 2: STACK1 SEGMENT STACK 。 除了以上二種方法外,還有一種更簡(jiǎn)潔的方法來(lái)定義堆棧段,有關(guān)內(nèi)容請(qǐng)見(jiàn)第。定義堆棧段 STACK1 DB 256 DUP(?) STACK1 ENDS DATA1 SEGMENT 。編寫(xiě)代碼段 CODE1 ASSUME CS:CODE1, DS:DATA1 START: MOV AX, DATA1 MOV DS, AX MOV DX, offset MSG MOV AH, 9 INT 21H 。源程序的結(jié)束語(yǔ)句 偽指令 END表示源程序到此為止,匯編程序?qū)υ撜Z(yǔ)句之后的任何內(nèi)容都不作處理,所以,通常情況下,偽指令 END是源程序的最后一條語(yǔ)句。 如果源程序是一個(gè)獨(dú)立的程序或主模塊,那么,偽指令 END后面一定要附帶一個(gè)標(biāo)號(hào);如果源程序僅是一個(gè)普通模塊,那么,其 END后面就一定不能附帶標(biāo)號(hào)。 在匯編語(yǔ)言的源程序也同樣有此三大結(jié)構(gòu) , 所不同的是它們的表現(xiàn)形式不同 。 程序的基本結(jié)構(gòu) 順序結(jié)構(gòu)是最簡(jiǎn)單的程序結(jié)構(gòu),程序的執(zhí)行順序就是指令的編寫(xiě)順序,所以,安排指令的先后次序就顯得至關(guān)重要。 例 編寫(xiě)程序段,完成下面公式的計(jì)算。 第 6章 程序的基本結(jié)構(gòu) 分支結(jié)構(gòu) 例 已知字節(jié)變量 CHAR1,編寫(xiě)一程序段,把它由小寫(xiě)字母變成大寫(xiě)字母。其中:變量 X和 Y是有符號(hào)字變量。 If (a+b 0 amp。 c%2==0) a = 62。 其中:變量 a、 b和 c都是有符號(hào)的整型 (int)變量。 第 6章 程序的基本結(jié)構(gòu) 條件表達(dá)式中可用的操作符有: ==(等于 )、 !=(不等 )、 (大于 )、 =(大于等于 )、(小于 )、 =(小于等于 )、 amp。amp。 若在條件表達(dá)式中檢測(cè)標(biāo)志位的信息,則可以使用的符號(hào)名有: CARRY?(相當(dāng)于 CF==1)、 OVERFLOW?(OF==1)、 PARITY?(PF==1)、 SIGN?(SF==1)、ZERO?(ZF==1)等。amp。檢測(cè) CF==1且 AX!=BX是否成立 。偽指令 .ELSEIF引導(dǎo)出另一個(gè)二叉分支,但它不能作偽指令塊的第一個(gè)偽指令。通常,循環(huán)結(jié)構(gòu)包括以下四個(gè)組成部分: ?循環(huán)初始化部分 ——初始化循環(huán)控制變量、循環(huán)體所用到變量; ?循環(huán)體部分 ——循環(huán)結(jié)構(gòu)的主體; ?循環(huán)調(diào)整部分 ——循環(huán)控制變量的修改、或循環(huán)終止條件的檢查; ?循環(huán)控制部分 ——程序執(zhí)行的控制轉(zhuǎn)移。 例 :把數(shù)組 score的平均值 (取整 )存入字變量 Average中 , 數(shù)組以負(fù)數(shù)為結(jié)束標(biāo)志 。另外,還增加兩個(gè)輔助循環(huán)的偽指令。條件 condition”成立時(shí)所執(zhí)行的指令序列 .ENDW 其中: .ENDW與前面的 .WHILE相匹配,它標(biāo)志著其循環(huán)體到此結(jié)束。 第 6章 程序的基本結(jié)構(gòu) REPEAT型循環(huán)偽指令 .REPEAT .REPEAT 循環(huán)體的指令序列 循環(huán)體的指令序列 .UNTIL condition .UNTILCXZ [condition] REPEAT型循環(huán)在執(zhí)行完循環(huán)體后,才判定邏輯表達(dá)式 condition的值。 如果 .UNTILCXZ后面沒(méi)有寫(xiě)邏輯表達(dá)式,那么,由 .REPEAT- .UNTILCXZ所構(gòu)成的循環(huán)與用 LOOP指令所過(guò)程的循環(huán)是一致的,它們都是以“ CX=0”為循環(huán)終止條件。所以,這時(shí)由“ .REPEAT- .UNTILCXZ condition”所構(gòu)成的循環(huán)就與用 LOOPNE/LOOPE指令所過(guò)程的循環(huán)是一致的,它們都是以“ condition || CX=0”為循環(huán)終止條件。 .WHILE- .ENDW和 .REPEAT- .UNTIL[CXZ]的循環(huán)體內(nèi)還可再含有循環(huán)偽指令,這樣就構(gòu)成了循環(huán)結(jié)構(gòu)的嵌套。前者是無(wú)條件終止循環(huán),后者是僅當(dāng)邏輯表達(dá)式 condition為真時(shí),才終止循環(huán)。 第 6章 程序的基本結(jié)構(gòu) ?循環(huán)繼續(xù)偽指令 .CONTINUE .CONTINUE .IF condition 該偽指令用于直接跳轉(zhuǎn)到包含它的最內(nèi)層循環(huán)的計(jì)算循環(huán)條件表達(dá)式的代碼處。 輔助循環(huán)偽指令 .BREAK和 .CONTINUE只能在偽指令 .WHILE- .ENDW和.REPEAT- .UNTIL的循環(huán)體內(nèi)使用。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1