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

正文內(nèi)容

第三節(jié)80868088匯編語言(編輯修改稿)

2024-08-28 12:53 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX …… RET MAIN ENDP CODE ENDS END MAIN 轉(zhuǎn)上頁 35 使用 DOS功能調(diào)用返回 ODS 格式: MOV AH, 4CH INT 21H 功能: 帶返回碼返回 DOS,返回碼可由程序設(shè)置 例: 將某 字節(jié)數(shù)據(jù)塊中負(fù)元素個(gè)數(shù)存入變量 CNT。 DATA SEGMENT ARRAY DB 1,10,11,7,9 LEN EQU $ARRAY CNT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,ARRAY MOV CX,LEN MOV DL,0 LP: MOV AL,[SI] CMP AL,0 JGE JSU INC DL JSU: INC SI LOOP LP MOV CNT,DL MOV AH,4CH INT 21H CODE ENDS END START 36 使用中斷功能調(diào)用返回 DOS 格式: INT 20H 功能: 程序結(jié)束并返回 DOS 使用過程中 RET返回 DOS 格式: MAIN PROC FAR PUSH DS MOV AX, 0 PUSH AX …… RET MAIN ENDP …… END MAIN 功能: 主程序設(shè)計(jì)為 FAR過程,通過調(diào)用 INT 20H返回 DOS(利用程序前綴 +RET指令實(shí)現(xiàn) )。 回下頁 37 程序前綴: 共 256字節(jié),開始兩單元為 INT 20H。 END指令: 執(zhí)行 MAIN函數(shù)體 (即 CS:IP),與 CALL MAIN (有當(dāng)前 CS:IP的壓棧過程 )不同。 RET指令: 自動(dòng)彈出棧頂?shù)?4個(gè)字節(jié),并送 IP和 CS。 功能實(shí)現(xiàn): 手工將程序前綴中 INT 20H的地址壓棧,即壓入 DS和 0000H(見上頁 ),執(zhí)行 RET時(shí)即可返回 DOS。 轉(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 DUP(?) S_S ENDS CODE SEGMENT ASSUME CS:CODE,DS:D_S,SS:S_S MAIN PROC FAR PUSH DS ;段地址 MOV AX, 0 PUSH AX ;偏移地址 MOV AX,D_S MOV DS,AX MOV CX,0 MOV AX,NUM LP1: AND AX,AX JZ DONE SAL AX,1 JNC NEXT INC CL NEXT: JMP LP1 DONE: MOV CNT,CL RET ;偏移地址 ;段地址 MAIN ENDP CODE ENDS END MAIN 39 COM文件結(jié)構(gòu) COM文件結(jié)構(gòu) (是 EXE文件的簡(jiǎn)單版本 ): 無文件頭域 (亦無重定位表 ),只有一個(gè)段 (長(zhǎng)度<64K),用中斷指令返回,代碼中過程屬性用 NEAR。 COM文件結(jié)構(gòu) 程序 代碼 程序前綴區(qū) 程序區(qū) COM文件加載后結(jié)構(gòu) IP=0100H CS、 DS、ES、 SS SP COM文件加載: 自動(dòng)生成程序前綴 (長(zhǎng) 100H),所有段寄存器全部指向程序前綴段, IP=0100H。 COM文件生成: 用 exe2bin將 EXE文件轉(zhuǎn)換成 COM文件。 轉(zhuǎn) 23頁 回下頁 40 COM文件源程序結(jié)構(gòu)示例: CODE SEGMENT ASSUME CS:CODE, DS:CODE,ES:CODE,SS:CODE START: JMP COD_S BUF DB 64 DUP( ?) ;數(shù)據(jù)區(qū) CNT DW 2 STA DB 64 DUP (?) ;堆棧區(qū) COD_S: MOV AX,CS ;給 DS、 ES、 SP賦初值 MOV DS,AX MOV ES,AX MOV SS,AX LEA SP,COD_S …… ; 主程序體 MOV AH,4CH INT 21H CODE ENDS END START ;標(biāo)號(hào)必須為 CS段第一條語句 轉(zhuǎn)上頁 41 第四節(jié) 結(jié)構(gòu)化程序設(shè)計(jì) 結(jié)構(gòu)化程序結(jié)構(gòu): 順序、分支 (多路分支 )、循環(huán) 回 44頁 回 52頁 條件 語句串 F T 多路條件 語句串 1 語句串 n … 條件 F T 語句串 1 語句串 2 條件 初始化 循環(huán)體 改信息 T F 條件 初始化 循環(huán)體 改信息 T F 繼續(xù)循環(huán)條件 退出循環(huán)條件 42 一、順序結(jié)構(gòu)程序設(shè)計(jì) 目的: 練習(xí)編寫完整程序、熟練掌握指令和偽指令 例 1: 將壓縮 BCD碼轉(zhuǎn)換成 ASCII BCD_BUF DB 96H ASC_BUF DB 2 DUP(?) …… MOV AL, BCD_BUF MOV CL, 4 MOV BL, AL SHR AL, CL ;右移 4位,將高 4位填 0 ADD AL, 30H MOV ASC_BUF, AL AND BL, 0FH ADD BL, 30H MOV ASC_BUF+1, BL …… 43 例 2: 用直接查表法完成將鍵盤輸入的一位十進(jìn)數(shù)(0~9)轉(zhuǎn)換成對(duì)應(yīng)的平方值并存放在 SQRBUF單元中。 SQUTAB DB 0,1,4,9,16,25,36,49,64,81 SQRBUF DB ? …… MOV BX, OFFSET SQUTAB MOV AH, 1 INT 21H ; DOS功能調(diào)用的 1號(hào)子功能是鍵盤輸入 SUB AL, 30H ;返回值為 ASCII碼,存于 AL中 XLAT ; AL←((BX)+(AL)) MOV SQRBUF, AL 習(xí)題: 將 X、 Y單元的字節(jié)數(shù)據(jù)的平均值存到 Z單元。 思考: IVT與 BIOS和 DOS系統(tǒng)功能調(diào)用關(guān)系如何? 如何使用 BIOS和 DOS系統(tǒng)功能調(diào)用? 44 二、分支結(jié)構(gòu)程序設(shè)計(jì) 目的: 掌握各種分支轉(zhuǎn)移的編程技巧 (如跳轉(zhuǎn)表法 ) 例 1: 變量 X為一任意有符號(hào)字節(jié)數(shù),若 X為負(fù)數(shù),則將其取補(bǔ)碼;否則,和 Y相加,其和存入 AX中 …… MOV AL, X CMP AL, 0 JGE ADDT NEG AL ; X求補(bǔ) MOV X, AL JMP EXIT ADDT: ADD AL,Y ; X+Y ADC AH, 0 EXIT: …… 轉(zhuǎn) 41頁 X≥0 AX←X+Y X←X 取補(bǔ) T F 45 例 2: 設(shè)字節(jié)單元 N N2中存放無符號(hào)數(shù) (1)若兩個(gè)均是偶數(shù),則分別加 1后送 D1 、 D2中 (2)若兩個(gè)均是奇數(shù),則直接送 D1 、 D2中 (3)若一奇一偶,則把奇數(shù)送 D1,偶數(shù)送 D2中 MOV AL,N1 MOV AH,N2 TEST AL,01H JNE ENDO ; N1奇數(shù)轉(zhuǎn) TEST AH,01H JNE L1 ; N2奇數(shù)轉(zhuǎn) INC AL ;兩偶數(shù) INC AH JMP ENDO L1: XCHG AL,AH ;交換 ENDO: MOV D1, AL ;存放結(jié)果 MOV D2, AH AL←(N1),AH←(N2) (AL)0≠0 F T (AH)0≠0 AL←(AL)+1,AH←(AH)+1 AL (AH) D1←(AL),D2←(AH) T F 46 跳轉(zhuǎn)表法實(shí)現(xiàn)多路分支原理: 跳轉(zhuǎn)表 是在某內(nèi)存區(qū)域順序排列的一組有規(guī)律的語句串的入口地址。 如是段內(nèi)分支,每個(gè)地址占兩個(gè)單元 (IP的值 ) 如是段間分支,每個(gè)地址占 4個(gè)單元 (CS:IP的值 ) TABLE SUB3 IP IP IP SUB2 SUB1 TABLE IP CS IP CS SUB2 SUB1 段內(nèi)分支 段間分支 47 例 3: 根據(jù) AL中為 1的位 (從低位到高位 )把程序轉(zhuǎn)移到 8個(gè)不同的程序 (段內(nèi) )分支中去 (跳轉(zhuǎn)表其始位置在變量 TABLE中 )。 方法 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)體、判斷與
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1