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

正文內(nèi)容

[工學(xué)]微機(jī)原理第4章-資料下載頁(yè)

2025-01-19 11:35本頁(yè)面
  

【正文】 7H=十六進(jìn)制數(shù)+30H + 07H四、碼轉(zhuǎn)換程序設(shè)計(jì) 計(jì)算機(jī)運(yùn)算: 二進(jìn)制數(shù) 人閱讀: 十進(jìn)制數(shù)、字符等 計(jì)算機(jī)通信 (外設(shè)) ASCII碼 二進(jìn)制數(shù)轉(zhuǎn)換為 ASCII碼 50 例:把二進(jìn)制數(shù)碼串中每一字節(jié)的兩位十六進(jìn)制數(shù)轉(zhuǎn)換為 ASCII碼。高位在高地址,低位在低地址。 BUFFER STRING A4 2C 53 3B 41 34 43 32 33 35 42 33 51 主程序 輸入?yún)?shù): 待轉(zhuǎn)換的二進(jìn)制數(shù) AL 存放 ASCII碼的地址指針 輸出參數(shù): 轉(zhuǎn)換的 ASCII碼放入 SI間址 的內(nèi)存 修改后的 SI指針 16進(jìn)制數(shù)首地址 → BX ASCII碼 首地址 → SI 16進(jìn)制數(shù)長(zhǎng)度 → CX ASCII碼長(zhǎng)度 → L2 取待轉(zhuǎn)換數(shù) → AL→DL 分離出低 4位 分離出高 4位右移四位 調(diào)用 CHANGE子程序 (CX)1=0 結(jié) 束 AGAIN N 調(diào)用 CHANGE子程序 Y (AL)<10 (AL)+ 07H→AL (AL)+ 30H→AL (AL)→(SI) (SI)+1→SI RET ADD_0 CHANGE子程序框圖 Y N 52 P146例 3- 13 NAME HEX_CHANGE_ASCII DATA SEGMANT L1 DW 2 ; 設(shè)置 2個(gè)字節(jié)的 16進(jìn)制數(shù) STRING DB 34H, 98H L2 DW ? ; 設(shè)置 1 字為 ASCII碼長(zhǎng)度 BUFFER DB 2*2 DUP (?) ; 設(shè)置 4字節(jié)存放空間 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA ES: DATA 53 START PROC FAR BEGIN: PUSH DS MOV AX, 0 PUSH AX ; DOS的 DATA段保護(hù) MOV AX, DATA MOV DS, AX ; 置本程序的 DS MOV ES, AX ; 置本程序的 ES MOV CX, L1 LEA BX, STRING ; 置源操作數(shù)指針 LEA SI, BUFFER ; 置目的操作數(shù)指針 MOV AX, CX SAL CX, 1 ; 完成 L2的運(yùn)算 MOV L2, CX MOV CX, AX 54 AGAIN: MOV AL, [BX]; 取源操作數(shù),存入 AL DL MOV DL, AL AND AL, 0FH; 使高 4為 0,底 4位保留 CALL CHANGE; 調(diào)子轉(zhuǎn)換為 ASCII存入內(nèi)存 MOV AL, DL; 恢復(fù)原操作數(shù) PUSH CX; 因移位使用 CL原 CX入 棧保護(hù) MOV CL, 4; 原高 4位到低 4 SHR AL, CL; 高 4位為 0 POP CX; 原 CX恢復(fù) CALL CHANGE; 調(diào)子轉(zhuǎn)換為 ASCII存入內(nèi)存 INC BX; 修改源操作數(shù)指針 LOOP AGAIN, 判循環(huán)終點(diǎn) RET START ENDP 55 CHANGE PROC CMP AL, 10 JL ADD_0 ADD AL, 07H ADD_0: ADD AL, 30H MOV [SI], AL; 送結(jié)果 INC SI RET CHANGE ENDP CODE ENDS END BEGIN 56 ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù) (BCD) 例 : 將 一 首 地 址 為STRING的 ASCII 碼串轉(zhuǎn)換為 未組合 BCD碼存入首地址為 BUFFE的另一緩沖區(qū) 。 ASCII碼串的長(zhǎng)度在內(nèi)存變量 L1 中 。 統(tǒng)計(jì)BCD碼串的長(zhǎng)度 , 放在BUFFE的第一個(gè)字節(jié)中 。 LI ASCII串長(zhǎng)度 BCD長(zhǎng)度 BUFFE STRING 57 ASCII碼長(zhǎng)度 ?CX; ASCII串首地址 ?SI BCD首地址 ?DI;置 BCD串長(zhǎng)度初值 0?DL ((SI)) ?AL (SI)+1?SI (AL)’0’ (AL)’9’ 高 4位置 0,低 4位保留 (AL) ?(DI) DL+1 ?DL (DI)+1?DI (CX)1?CX=0 (DL) ?BUFFE N 返回 AGAIN Y Y NEXT N N Y 58 列是以數(shù)據(jù)單元 (一個(gè)字節(jié)或多個(gè)字節(jié) )為元素,在內(nèi)存中順序存放。 例 :有一無(wú)序列,其長(zhǎng)度在 BUFFER為首地址的第一個(gè)字節(jié)中。將內(nèi)存變量KEY對(duì)該無(wú)序列逐個(gè)查找。若無(wú)該數(shù)據(jù),則添在列尾,長(zhǎng)度加 1。若有該數(shù)據(jù)則不作處理。 長(zhǎng)度 BUFFER 五、列和表 BUFFER首地址 ?DI 列長(zhǎng)度 ?CX 調(diào)整 DI指向列數(shù)據(jù) KEY ?AL 搜索 搜索到 KEY KEY添加到列尾 列長(zhǎng)度+ 1 返回 N ZF= 1 DONE Y 59 NAME ADD_KEY DATA SEGMENT BEFFER DB 10,’ABCDEFGHIJ’; 串?dāng)?shù)據(jù) DB ? KEY DB ‘$’ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START PROC FAR BEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX 60 LEA DI, BUFFER ; 執(zhí)行流程圖 MOV CH, 0 MOV CL, [DI] INC DI CLD MOV AL, KEY REPNZ SCASB JE DONE MOV [DI], AL INC BUFFER DONE: RET START ENDP CODE ENDS END BEGIN 61 例:有序列的對(duì)分搜索。從自 STRING為首地址的有序列中查找存放在 CHAR中的關(guān)鍵字(設(shè)( CHAR)= 60 )。 若找到,將搜索次數(shù)送 PTRN, 否則,將- 1送 PTRN。 序號(hào) 數(shù)據(jù)串 第一次 第二次 第三次 0 00 上限 L = 0 1 11 2 15 3 21 4 34 5 57 ? 5 6 0 5 7 上限 L = 5 上限 L = 5 6 60 ? 6 6 0 找到 7 78 ? 7 6 0 7 8 下限 R = 7 8 90 9 127 下限 R = 10 下限 R = 10 62 根據(jù)搜索上、下限,按對(duì)分原則確定搜索元素 (或搜索元素的地址 ) 搜索元素號(hào)= INT[(搜索上限+搜索下限 )/2] 判斷下次搜索上、下限,即修改搜索區(qū) 關(guān)鍵字 搜索元素,搜索元素號(hào) ?搜索上限 關(guān)鍵字 搜索元素,搜索元素號(hào) ?搜索下限 搜索結(jié)束條件 搜索元素=關(guān)鍵字,找到! 搜索元素號(hào)=搜索上限 (因搜索 INT的原因 ),找遍未找到! 63 表首地址 ?SI;數(shù)據(jù)長(zhǎng)度 ?CX 關(guān)鍵字 ?AL;搜索次數(shù) 1?DX 確定首次搜索上下限 BX= (上限地址+下限地址 )/2 判終點(diǎn) 搜索元素=關(guān)鍵字? 判終點(diǎn) 搜索元素號(hào)=上限 搜索元素號(hào) ?上限 搜索元素號(hào) ?下限 搜索次數(shù)+ 1 未找到標(biāo)志- 1?DX (DX) ?PTRN 返回 CONTI Y JE Y JE Y 關(guān)鍵字 ≤搜索元素 JE NOFOD FOUND NEXT LESS 64 查表 例:利用三個(gè)表把一任意的 16進(jìn)制數(shù) NUMBER轉(zhuǎn)換為與它等效的 ASCII、 BCD和格雷碼。 DATA SEGMENT TABLE DB ’ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F ’ ; ASCII碼 DB 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10H, 11H, 12H, DB 13H,14H, 15H ; BCD碼 DB 0, 1, 3, 2, …… , 9, 8 ;格雷碼 BUFFER DB 3 DUP(?) ;被轉(zhuǎn)換的碼 (3個(gè)字節(jié) ) DATA ENDS 查表法 建立數(shù)據(jù)表格,順序地以數(shù)組形式存放 以變址或執(zhí)行查表指令的方式獲取表格中的數(shù)據(jù) 65 用查表指令 XLAT MOV BX, OFFSET TABLE MOV AL, NUMBER XLAT 根據(jù) XLAT指令的要求: (BX)為首地址 (AL)為要變換的數(shù) 用變址尋址查表 LEA SI, TABLE MOV BX, NUMBER MOV AL, [SI][BX] (SI) 為表首地址 ASCII碼: TABLE BCD碼: TABLE+ 16 格雷碼: TABLE+ 32 (BX)為要變換的數(shù) 66 六、子程序 主程序 CALL SUB1 子程序 SUB1 PROC 斷點(diǎn)地址 轉(zhuǎn)向子程序 RET 返回主程序 子程序是編程中常用的重要方法,它只需編寫一次,測(cè)試一次而可以多次重復(fù)使用。把多次使用的程序段編成一個(gè)子程序 (過(guò)程 PROC),使用 CALL和 RET指令調(diào)用和返回。 67 子程序要真正實(shí)用在于它的通用性,例如:在任意長(zhǎng)度、任何地址的串中搜索任意字符的子程序是廣泛有用的。 在編寫子程序時(shí),應(yīng)寫一個(gè)子程序說(shuō)明,使子程序的模塊結(jié)構(gòu)及功能一目了然。 * 子程序的名稱,功能及性能 * 子程序中用到的寄存器和存儲(chǔ)單元 * 子程序的入口參數(shù),出口參數(shù) * 子程序中調(diào)用其它子程序的名稱 68 *子程序的調(diào)用和返回 子程序名 PROC 可存放在與主程序同一 CS段。調(diào)用時(shí)使用 CALL (NEAR)指令,稱為 段內(nèi)調(diào)用 。 子程序名 PROC 可存放在與主程序不同的 CS段。調(diào)用時(shí)使用 CALL FAR指令,稱為 段間調(diào)用 。 *現(xiàn)場(chǎng)保護(hù)和恢復(fù) 保護(hù)和恢復(fù)的對(duì)象:在子程序中需要使用的內(nèi)部寄存器。 (
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1