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

正文內(nèi)容

第三節(jié)80868088匯編語言-免費(fèi)閱讀

2025-08-25 12:53 上一頁面

下一頁面
  

【正文】 D_SEG SEGMENT ARRAY DB 100 DUP(?) COUNT DW 100 ;數(shù)組元素個(gè)數(shù) SUM DW ? D_SEG ENDS …… PROADD PROC PUSH AX ;保存現(xiàn)場 PUSH CX PUSH SI XOR AX, AX LEA SI, ARRAY ;直接使用存儲(chǔ)單元中數(shù)據(jù) MOV CX, COUNT NEXT: ADD AL, [SI] POP SI ADC AH, 0 POP CX INC SI POP AX LOOP NEXT RET MOV SUM, AX PROADD ENDP 70 地址表傳遞參數(shù)示例: 求數(shù)組元素之和。 例: SUBPRO PROC NEAR …… ;過程體 RET SUBPRO ENDP 61 過程調(diào)用 過程定義偽指令 過程調(diào)用指令 段內(nèi)調(diào)用 直接 F1 PROC NEAR CALL F1 或 CALL NEAR PTR F1 間接 CALL WORD PTR BX 或 CALL WORD PTR [BX] 段間調(diào)用 直接 F1 PROC FAR CALL FAR PTR F1 間接 CALL DWORD PTR [BX] 說明: ① CALL/RET指令自動(dòng)完成 IP或 /和 CS的保護(hù)與恢復(fù); ②過程同時(shí)有段內(nèi)和段間調(diào)用時(shí),按段間定義和調(diào)用; ③過程定義與調(diào)用不在同一模塊時(shí),需用 PUBLIC和 EXTRN偽指令說明。 算法 : 在數(shù)組 R中查找 K,采用二分法 (折半法 )查找 ⑴ 下標(biāo) LOW←1, HIGH←N 。 方法 1— 用寄存器間接尋址方法 CMP AL, 0 JE DONE LEA BX, TABLE L: SHR AL, 1 JNC NOT_YET ; CF=0跳轉(zhuǎn) JMP WORD PTR[BX] NOT_YET: ADD BX, TYPE TABLE ; Type Table=2 JMP L DONE: …… 思考: 會(huì)不會(huì)產(chǎn)生死循環(huán)? 若會(huì)產(chǎn)生死循環(huán),如何解除? 回下頁 48 方法 2— 用變址尋址方法 CMP AL, 0 JE DONE MOV SI, 0 L: SHR AL, 1 JNC NOT_YET JMP TABLE[SI] ;缺省屬性為 WORD PTR NOT_YET: ADD SI, TYPE TABLE JMP L DONE: …… 思考: 若實(shí)現(xiàn)段間分支,需哪些改動(dòng) /要求? 若 SHR改為 SHL,程序有哪些改動(dòng)? 轉(zhuǎn)上頁 轉(zhuǎn)轉(zhuǎn)移地址尋址 49 三、循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 循環(huán)控制方式: 計(jì)數(shù)法 (減量 /增量 )、條件控制法 循環(huán)類型: 運(yùn)行循環(huán)體、判斷與控制的先后次序 轉(zhuǎn) 41頁 常規(guī)應(yīng)用方法: 已知循環(huán)次數(shù) — 增量法: CMP+Jx指令 減量法: ① LOOP指令 (結(jié)束計(jì)數(shù)為 0) ② CMP+Jx指令 (結(jié)束計(jì)數(shù)不為 0) 未知循環(huán)次數(shù) — 條件控制法: CMP/TEST+Jx[+JMP]指令 50 單重循環(huán)程序設(shè)計(jì) 減量計(jì)數(shù)法例 1: 將以 S1為起始地址的 26個(gè)字母依次傳送到以 S2為起始地址的連續(xù)單元中。 功能實(shí)現(xiàn): 手工將程序前綴中 INT 20H的地址壓棧,即壓入 DS和 0000H(見上頁 ),執(zhí)行 RET時(shí)即可返回 DOS。 示例 1: ARRAY DW 1,2,$+4,3,$+5 示例 2: BUFFER DB 1,2,3,4,5 COUNT EQU $BUFFER ; COUNT的值為 BUFFER的長度 01 00 02 00 7C 00 03 00 81 00 ARRAY 0074H 0078H 007CH 31 ( 2)定位偽指令 格式: ORG 表達(dá)式 操作: 將表達(dá)式的值送入?yún)R編地址計(jì)數(shù)器 (即命令匯編程序從表達(dá)式值位置生成目標(biāo)代碼 ) 說明: 若需相對(duì) $移動(dòng),則表達(dá)式 =$+偏移量。CODE39。 必須指定 CS,最后一次指定必須在開始執(zhí)行段中,且段名為開始執(zhí)行段的段名。 : 指定當(dāng)前段起始地址的性質(zhì) ① PARA 起始地址的低 4位為 0H,即 16的倍數(shù); ② PAGE 起始地址的低 8位為 00H,即 256的倍數(shù) ③ BYTE 可從任意地址開始 ④ WORD 當(dāng)前段的起始地址為偶地址 默認(rèn)項(xiàng)是 PARA 回 21頁 20 : 指明程序連接時(shí),段的合并方法 ① PRIVATE 不與其他模塊中任何段連接或重疊 ② PUBLIC 不同模塊中 PUBLIC類型的同名段 連接 在一起,形成一個(gè)單一的段 (段長為 ∑ ) ③ COMMON 不同模塊中 COMMON類型的同名段 重疊 在一起,共享相同的存儲(chǔ)區(qū) (共享存儲(chǔ)區(qū)長度為 max) ④ STACK 功能同 PUBLIC,但新段為堆棧段 (段長為 ∑) 默認(rèn)項(xiàng)是 PRIVATE : 指明程序連接時(shí),段間次序的確定方法 LINK程序?qū)⒏髂K相同‘類別名’的各段依次序連續(xù)存放在內(nèi)存中,但各段相互獨(dú)立。 運(yùn)算符 有算術(shù)、邏輯、關(guān)系、數(shù)值返回、屬性 5種。 回下頁 回 7頁 6 ( 2)變量 組成: 在除代碼段外的段中定義,只由名字組成。1 第三節(jié) 8086/8088匯編語言 一、匯編語言程序基本結(jié)構(gòu) 說明: ①除代碼段外,其余段可缺省 ; ②各種段均可有多個(gè),用匯編語言指令可指定段與段寄存器關(guān)系,數(shù)據(jù)段 ≈ 附加段 (段寄存器不同 ); ③各段無順序要求; ④通過 END指明模塊到此 結(jié)束 , 程序從“標(biāo)號(hào)”處 開始 執(zhí)行。 屬性: 段 屬 性 — 變量 (定義時(shí) )所在段的起始地址; 偏移屬性 — 變量與所在段起始地址間字節(jié)數(shù); 類型屬性 — 表明為它所保留的主存字節(jié)數(shù), DB/DW/DD/DQ/DT對(duì)應(yīng) 1/2/4/8/10字節(jié)。 種類 運(yùn)算符 示例 算術(shù) +、-、 、 /、 MOD MOV AL,17/5 ; AL=3 邏輯 AND、 OR、 XOR、 NOT MOV AL,VAL AND 01H; AL=01或 00H 關(guān)系 EQ、 NE、 LT、 GT、 LE、GE MOV AX,DAT GT 0CH ; =0FFFFH MOV AL,DAT LE 0CH ; =00H 數(shù)值回送 SEG、 OFFSET、 TYPE、 LENGTH、 SIZE 屬性 PTR、 SHORT、段操作符、 THIS、 HIGH、 LOW 9 ( 3)數(shù)值返回運(yùn)算符 運(yùn)算符 作用對(duì)象 功能 地址 回送 SEG 標(biāo)號(hào)或變量 返回其所在段的 段基址值 OFFSET 標(biāo)號(hào)或變量 返回其 相對(duì) 段 基址的 偏移量 符號(hào)特征回送 TYPE 標(biāo)號(hào)或變量 返回用數(shù)字表示的 類型屬性 LENGTH 變量 若變量用 DUP定義,則返回定義 元素個(gè)數(shù) ,否則返回 1 SIZE 變量 返回用 DUP定義的 存儲(chǔ)空間(LENGTH*TYPE之積 ) TYPE對(duì)象種類 TYPE對(duì)象類型 TYPE運(yùn)算結(jié)果 變量 DB/DW/DD/DQ/DT 1/2/4/8/10 標(biāo)號(hào) NEAR/FAR 1/2 回下頁 10 示例: D_SEG SEGMENT NUM1 DB 10 DUP(10) ;數(shù)據(jù)定義 NUM2 DW 20 DUP(0, 4 DUP(2)) NUM3 DB 10H, 5 DUP(?) NUM4 DB ‘STRING’ D_SEG ENDS ;假設(shè) DS指向 D_SEG段 MOV AX, SEG NUM1 ;等價(jià)于 AX←(DS) MOV BX, SEG NUM2 ; AX與 BX值相同 MOV SI, OFFSET NUM1 ; NUM1相對(duì)于段的偏移量 → SI MOV DI, OFFSET NUM2 ;等價(jià)于 LEA DI, NUM2 MOV AH, TYPE NUM2 ; 2→AH MOV BH, LENGTH NUM2 ; 20→BH (指最外層參數(shù)) MOV AL, LENGTH NUM3 ; 1→AL( 指第一個(gè)參數(shù) ) MOV CL, SIZE NUM2 ; 20*2→CL MOV CH, SIZE NUM4 ; 1*1→CH 轉(zhuǎn)上頁 11 ( 4)屬性運(yùn)算符 PTR格式: 類型 PTR 表達(dá)式 PTR功能: 用新類型取代表達(dá)式默認(rèn)的數(shù)據(jù)類型 PTR說明: ①表達(dá)式為 MEM操作數(shù)或變量時(shí),類型可為 BYTE、WORD、 DWORD,表達(dá)式為標(biāo)號(hào)時(shí),類型可為 NEAR、 FAR; ②僅改變數(shù)據(jù)類型屬性,且僅在本語句有效。 缺省項(xiàng)為空 段合并的優(yōu)先級(jí)>確定段間次序的優(yōu)先級(jí)。 CS=END指令中標(biāo)號(hào) /過程名對(duì)應(yīng)的段 IP=END指令中標(biāo)號(hào) /過程名在段內(nèi)的偏移地址 轉(zhuǎn)下頁 23 、 ES的指定 對(duì) DS、 ES的 指定無效 (文件加載后自動(dòng)指向程序前綴 ),需要在程序中顯式賦值 (指定 )。 ASSUME CS:C_SEG,SS:S_SEG,DS:NOTHING,ES:NOTHING START: …… MOV AX, S_SEG ;填入段基址 MOV SS, AX LEA SP, ST ;填入棧頂指針 C_SEG ENDS END START 思考: 若有 STACK屬性的堆棧段,又用指令賦值后結(jié)果如何? 27 程序開始和結(jié)束偽指令 ( 1)模塊命名偽指令 格式 1: NAME [模塊名 ] 操作 1: 給源程序進(jìn)行模塊命名 說明 1: 若模塊名缺省,則自動(dòng)用程序名代替。 示例: D_SEG SEGMENT PARA 39。 轉(zhuǎn)上頁 程序前綴區(qū) INT 20H 其它前綴信息 程序區(qū) 程序 信息 EXE文件加載后結(jié)構(gòu) CS IP=? DS、 ES 38 示例: 存儲(chǔ)單元 NUM中為一個(gè) 16位二進(jìn)數(shù), 將 其中 非零 位的個(gè)數(shù)存入 CNT D_S SEGMENT NUM DW ? CNT DB ? D_S ENDS S_S SEGMENT STACK DB 64
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1