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

正文內(nèi)容

[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]微機(jī)原理與接口技術(shù)匯編語(yǔ)言程序設(shè)計(jì)-wenkub.com

2025-01-16 09:18 本頁(yè)面
   

【正文】 繼續(xù)下一次比較 MOV MAXNUM,AX 。BX指向緩沖區(qū)下一個(gè)字單元 CMP AX,[BX] 。BX指向緩沖區(qū)下一個(gè)字單元 LOOP AGAIN MOV BX,OFFSET ARRAY 。綁定各個(gè)段與段寄存器 MAIN PROC START:MOV AX,DATA MOV DS,AX MOV CX,5 。STACK39。設(shè)置出口參數(shù) POP DX POP CX POP BX 。利用移位指令,實(shí)現(xiàn)數(shù)值乘 10 MOV AH,0 ADD BX,AX 。不是 0~ 9之間的字符,則輸入數(shù)據(jù)結(jié)束 JB READ3 CMP AL,39。非“+”和“-”,轉(zhuǎn) READ2 MOV CX,1 READ1:MOV AH,01 。是“+”,繼續(xù)輸入字符 JZ READ1 CMP AL,39。CX為正負(fù)標(biāo)志, 0為正,- 1為負(fù) MOV AH,1 。 分析: ① 首先判斷輸入為正或負(fù)數(shù),并用一個(gè)寄存器記錄 ② 接收鍵盤輸入的 0~ 9數(shù)字的 ASCII碼,然后減去 30H轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制數(shù) ③ 將前面輸入的數(shù)值乘 10,并與剛輸入的數(shù)字相加得到新的數(shù)值,并保存至指定寄存器 ④ 重復(fù)②、③步,直到輸入一個(gè)非數(shù)字字符結(jié)束 ⑤ 負(fù)數(shù)進(jìn)行求補(bǔ),轉(zhuǎn)換成補(bǔ)碼;否則直接保存數(shù)值 子程序名: Read 入口參數(shù):無(wú) 出口參數(shù): AX 注意:本例采用 16位寄存器表達(dá)數(shù)據(jù),所以只能輸入+ 32767~- 32768間的數(shù)值。完成了一趟比較,大循環(huán)減 1 JNZ SORT 。比較數(shù)組中第 n個(gè)數(shù)和 n+1個(gè)數(shù) JNA LABLE XCHG AL,[SI+1] MOV [SI],AL 。送大循環(huán)的次數(shù),比較的趟數(shù) SORT:MOV CX,BX 。M39。S39。Z39。 程序清單 : STACK SEGMENT STACK 39。顯示子程序 ??? Display ENDP CODE ENDS END START 例: 編寫一個(gè)程序使內(nèi)存 5個(gè)連續(xù)的字節(jié) (字或者雙字 )空間中存放的無(wú)符號(hào)數(shù)按序排列存放。否則將大數(shù)送 AL NEXT:LOOP LABLE 。取第一個(gè)數(shù) LABLE:INC BX 。存放最大數(shù) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC START:MOV AX,DATA MOV DS,AX 。STACK39。取第二個(gè)數(shù) ADD AX, [BP+6] 。DAT1入棧 MOV AX, DAT2 PUSH AX 。 子程序名: Addition 入口參數(shù):堆棧 出口參數(shù): AX STACK SEGMENT STACK 39?;謴?fù)寄存器 POP DI POP CX RET MOVEDAT ENDP CODE ENDS END START ?利用堆棧傳遞參數(shù) 參數(shù)傳遞還可以通過(guò) 堆棧 這個(gè)臨時(shí)存儲(chǔ)區(qū)。小于則從首地址遞增傳送 STD 。源數(shù)據(jù)塊首地址送 SI MOV DI,DESADR 。入口參數(shù)賦值 MOV LEN,100 。子過(guò)程結(jié)束 CODE ENDS END START ?利用存儲(chǔ)單元傳遞參數(shù) 子程序和主程序使用同一個(gè)變量名存取數(shù)據(jù)就是利用共享存儲(chǔ)單元進(jìn)行參數(shù)傳遞,類似于 C的全局變量。置入口參數(shù) CALL Display 。STACK39。轉(zhuǎn)化數(shù)字為對(duì)應(yīng)的 ASCII MOV AH,2 INT 21H LOOP OUTP POP SI 。AX中的數(shù)除以 10 PUSH DX 。保護(hù)寄存器 PUSH BX PUSH CX PUSH DX PUSH SI MOV SI,10 。 利用堆棧傳遞參數(shù):將入口參數(shù)或者出口參數(shù)推入堆棧,利用堆棧完成參數(shù)交換,必須注意堆棧內(nèi)容和堆棧指針。 參數(shù)的類型有兩種: 入口參數(shù):主程序調(diào)用子程序時(shí),提供給子程序運(yùn)行的原始數(shù)據(jù),可以是數(shù)據(jù)本身也可以是地址。 注意:保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)是 子程序 完成的,根據(jù)子程序的需要將相應(yīng)的寄存器加以保護(hù)。 5)子程序格式:子程序以 PROC開始,以 ENDP結(jié)束;如果是段內(nèi)調(diào)用,用默認(rèn)值 NEAR屬性。 2)子程序返回: RET i16 子程序的出口地址是返回指令 RET,可以帶 1個(gè)立即數(shù)作為參數(shù),必須是子程序的最后一條指令,有 段內(nèi)返回 和 段間返回兩種。結(jié)束程序 CODE ENDS END START 注意:堆棧段定義建議如下,則 SS和 SP的初始化由系統(tǒng)完成: STACK SEGMENT STACK ‘STACK’ 子程序,也稱為 過(guò)程, 是功能相對(duì)獨(dú)立的一段代碼。余數(shù)入棧 INC CX CMP AX,0 。SI中是除數(shù) XOR CX,CX MOV BX,174 。標(biāo)識(shí)符 STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK 。C39。a39。039。 3) 指令性語(yǔ)句的標(biāo)識(shí)符后面要 有冒號(hào) ,如標(biāo)識(shí)符 NEXT;指示性語(yǔ)句的標(biāo)識(shí)符后面 沒(méi)有冒號(hào) ,如標(biāo)識(shí)符 DATA、 CODE。 DATA SEGMENT ORG 0200H BUF DB 10 DUP (?) ;變量 BUF的在數(shù)據(jù)段的偏移地址 DATA ENDS ;是 0200H,省略為 0000H CODE SEGMENT ASSUME CS:DCODE,DS,DATA ORG 1000H ;首條指令在代碼段的偏移地址 MOV AX,DATA ;是 1000H,省略為 0100H MOV DS,AX ?? CODE ENDS END ?地址計(jì)數(shù)器 $ 匯編語(yǔ)言中,每一個(gè)段都有一個(gè)地址計(jì)數(shù)器 $,指示當(dāng)前指令或者數(shù)據(jù)的在段內(nèi)的偏移量。 若 BUFFER存儲(chǔ)區(qū)是用如下偽指令定義的: BUFFER DW 100 DUP (?) 則 TYPE BUFFER等于 2, LENGTH BUFFER等于 100, SIZE BUFFER等于 200 ?合成運(yùn)算符 PTR 用來(lái)對(duì)存儲(chǔ)單元規(guī)定類型 ,通常和 BYTE, WORD和DWORD等連起來(lái)使用。 1)運(yùn)算符 OFFSET用來(lái)取地址的偏移量; 2)運(yùn)算符 SEG取存儲(chǔ)單元的段地址。 例如: MOV CL, 36H AND 0FH 經(jīng)匯編后 : MOV CL, 06H 這些邏輯運(yùn)算符也是 8086/8088的指令助記符,會(huì)不會(huì)造成混亂呢 ? 不會(huì)的,前者在 匯編時(shí) 進(jìn)行,而后者在 指令執(zhí)行時(shí) 進(jìn)行的。 ABC DB 0BH, 06H, ?, ?, ? LPI DW ?, 54H, ? … … 0B 06 54 00 … … ABC LPI 2)操作數(shù)還可以用 復(fù)制操作符 DUP來(lái)縮寫 BUFFER DB 9 DUP (?) ABC DB 0,1,3 DUP(?) ABC DB 0,1,?,?,? 3)操作數(shù)可以是字符串 STRING DB ‘HELLO’ 48 50 4C 4C 4F ‘ H’ ‘ E’ ‘ L’ ‘ L’ ‘ O’ STRING ?匯編的表達(dá)式和運(yùn)算符 表達(dá)式 是 常數(shù) 、 寄存器、標(biāo)識(shí)符 與一些 運(yùn)算符 組合的序列,分 數(shù)字表達(dá)式 和 地址表達(dá)式 兩種。 偽指令 DB, DW, DD用來(lái)定義變量 變量的屬性 1)段基址 (SEG):變量所在段的起始地址 2)偏移量 (OFFSET):變量所在地址與段基址的相對(duì)距離 3)類型 (TYPE):變量指示的存儲(chǔ)區(qū)中每個(gè)數(shù)據(jù)所占的內(nèi)存單元的字節(jié)數(shù),可以是字節(jié) (1字節(jié) )、字 (2字節(jié) )、雙字 (4字節(jié) ) 注意: 1)變量定義后可以使用,在指令中必須與操作數(shù)類型一致 2) 變量的偏移地址僅僅對(duì)應(yīng)其所代表的數(shù)據(jù)區(qū)的首地址,如果這個(gè)數(shù)據(jù)區(qū)有多個(gè)數(shù)據(jù)項(xiàng),對(duì)后面的數(shù)據(jù)項(xiàng)操作時(shí)必須改變地址值。 如果一個(gè)常數(shù)后面加字母 D( 可不加)表示十進(jìn)制數(shù)。 STACK SEGMENT PARA STACK ‘STACK’ 段名 定位 組合類型 類別 DATA SEGMENT 數(shù)據(jù)段內(nèi)容 DATA ENDS STACK SEGMENT 堆棧段內(nèi)容 STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START:MOV AX,DATA MOV DS,AX ;初始化 DS MOV AX,STCAK MOV SS,AX ;初始化 SS MOV SP,TOP ;初始化 SP ??? ??? MOV AH,4CH INT 21H ;程序正常結(jié)束 CODE ENDS END START ?過(guò)程定義偽指令 PROC、 ENDP 過(guò)程就是完成某個(gè)特定功能的子程序,應(yīng)用偽指令 PROC和ENDP定義過(guò)程的格式如
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1