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

正文內(nèi)容

第4章:匯編語言程序設(shè)計(jì)(lyz)(v10)-預(yù)覽頁

2025-08-25 15:11 上一頁面

下一頁面
 

【正文】 segment 4. 執(zhí)行過程 CMYFILECR 匯編語言源程序的分段結(jié)構(gòu) 通常 , 一個(gè)匯編源程序一般應(yīng)該由 3個(gè)邏輯段組成 , 即數(shù)據(jù)段 、 堆棧段和代碼段 。 ? 堆棧段用來在內(nèi)存中建立一個(gè)適當(dāng)?shù)亩褩^(qū) , 以便在中斷 、 子程序調(diào)用時(shí)使用 。 ? 偽指令語句:偽指令語句是為匯編程序和連接程序提供一些必要控制的管理性語句,它不產(chǎn)生目標(biāo)代碼,僅僅在匯編過程中告訴匯編程序應(yīng)如何匯編,并完成相應(yīng)的偽操作。 注意:標(biāo)號(hào)和變量都具備 3種屬性 —— 段屬性 、 偏移屬性及類型屬性 。 當(dāng)有兩個(gè)或兩個(gè)以上的操作數(shù)時(shí) , 各操作數(shù)之間用逗號(hào)隔開 。 4 種。 BYTE 起始地址為任意值,無限制。 PUBLIC本段與其他同名同類的段連接起來。 AT表達(dá)式 直接連接為表達(dá)式的結(jié)果。 ? 程序偽操作 * 格式: TITLE 程序名 程序說明 (60個(gè) ASCII字符 ) 程序結(jié)束偽操作 END START ? 模塊操作 格式: NAME 模塊名 (程序開始 ) 模塊 結(jié)束 END 啟動(dòng)標(biāo)號(hào) /過程名 ?段分配偽操作 格式: ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA 其中: ? 除 CS:CODE外,其余各段需要賦值。 binary number 0002 12 DATA3 DB 12H 。 the offset address is 18h 0018 00 DATA5 DB ? 。 different data types ?DW 定義字 ,對(duì)其后的每個(gè)數(shù)據(jù)分配 2B,數(shù)據(jù)的低 8位存貯在低字節(jié)地址,高 8位存 在高字節(jié)地址 。 hexadecimal 0076 FBFF DATA11 DW 5 。 binary 00A8 F2572A5C DATA15 DD 5C2A57F2H 。 hexadecimal 00C8 4948000000000000 DATA18 DQ ‘HI’ 。 nothing 0000 ‘A’‘B’‘C’‘A’‘B’‘C’‘S’‘Y’‘! ’1310STRINGDB 39。,39。DB 39。,39。DW 39。例題 2 STRING DW ‘A’,‘ B’,‘ C’ DW ‘AB’,‘ FG’ ‘C’‘B’‘A’00HSTRINGDD 39。 格式: PUBLIC符號(hào)名 1:類型 [, ] EXTRN 符號(hào)名 1:類型 [, ] 例: 模塊 1: EXTRN VAR2: BYTE, LAB2: FAR PUBLIC VAR1, LAB1 DATA SEGMENT VAR1 DW 0800H …… DATA ENDS CODE SEGMENT LAB1 …… CODE ENDS 模塊 2: EXTRN VAR1: WORD, LAB1: FAR PUBLIC VAR2, LAB2 DATA SEGMENT VAR2 DB 0FFH …… DATA ENDS CODE SEGMENT LAB2 …… CODE ENDS (3) 輔助偽操作 ? 記錄偽指令 ① 記錄定義 格式:記錄名 RECODE 字段名 1:寬度 [, ] 注意:記錄寬度 16 針對(duì)一般的數(shù)據(jù)位。 l 結(jié)構(gòu)偽指令 格式: COMMENT / 注釋 / 4. 程序計(jì)數(shù)器 $和 ORG偽指令 1) . 程序計(jì)數(shù)器 $ 字符 “ $”在 8086宏匯編中具有一種特殊的意義 ,把它稱為程序計(jì)數(shù)器 。 利用 ORG偽指令可以改變位置計(jì)數(shù)器的值 。 在計(jì)算具有多個(gè)運(yùn)算符的表達(dá)式值時(shí) , 按以下規(guī)則操作: l 優(yōu)先級(jí)高的先運(yùn)算 , 優(yōu)先級(jí)低的后運(yùn)算 。(宏指令 =常用程序段) 宏指令與子程序的區(qū)別: (1) 宏指令在匯編時(shí)由宏匯編程序識(shí)別,并被替換成所代表的程序段。 (4) 宏指令可以使用不同的參數(shù)使它代表不同的程序段; 子程序是固定。 分析:條件;原始數(shù)據(jù)來源 、 類型;結(jié)果;存放形 式;系統(tǒng)要求;顯示形式等 。 注意:加注釋;結(jié)構(gòu)簡(jiǎn)單;使用符號(hào)地址 。 流程圖如下圖所示 。’0’’9’ ASCII 30H39H cmp al, 3ah jl printit add al, 7h 。 。 ? 如下面的 4個(gè)數(shù)即是采用冒泡排序比較的例子 。1結(jié)束標(biāo)志 mov si, 0 cmp array_end[si], ax jle insert mov bx, array_end[si] mov array_end[si+2], bx sub si, 2 jmp short pare insert: mov array_end[si+2], ax C 分支程序設(shè)計(jì) 判定條件 A B A B X 判定條件 (1)兩路分支結(jié)構(gòu) (2)多路分支結(jié)構(gòu) ( 1) 邏輯尺控制 ( 2) 條件控制 ( 3) 地址跳躍表 TABLE DW ONE, TWO, THREE JMP TABLE[SI] … 1000 ONE: … 2022 TWO: … 3000 THREE: … ? ? case 1 case 2 case 3 case 1 case 2 case n 。 ? 程序如下: ? DATA SEGMENT ? X DB 25 ? Y DB ? ? DATA ENDS ? CODE SEGMENT ? ASSUME CS:CODE,DS:DATA ? START:MOV AX,DATA ? MOV DS,AX ;初始化 ? MOV AL,X ; X取到 AL中 ? CMP AL,0 ; Al中內(nèi)容和 0比較 ? JGE BIG ;大于等于 0, 轉(zhuǎn) BIG ? MOV BL,1 ;否則為負(fù)數(shù) , - 1送 BL ? JMP EXIT ;轉(zhuǎn)到結(jié)束位置 ? BIG: JE EE ; Al中內(nèi)容是否為 0轉(zhuǎn) EE ? MOV BL,1 ;否則為大于 0, 1送 BL ? JMP EXIT ;轉(zhuǎn)到結(jié)束位置 ? EE: MOV BL,0 ; 0送 BL ? EXIT: MOV Y,BL ; BL中內(nèi)容送 Y單元 ? MOV AH,4CH ? INT 21H ; 程序結(jié)束 ? CODE ENDS ? END START ; 匯編結(jié)束 ? 【 例 】 試編一程序 , 求三個(gè)帶符號(hào)字?jǐn)?shù)據(jù)中的最大值 , 并將最大值存入MAX字單元中 。 當(dāng)進(jìn)行多分支條件判斷時(shí) , 把當(dāng)前的條件 —偏移量加上表首地址作為轉(zhuǎn)移地址 , 轉(zhuǎn)移到表中的相應(yīng)位置 , 繼續(xù)執(zhí)行無條件轉(zhuǎn)移指令 , 達(dá)到多分支的目的 。 同理 , 轉(zhuǎn)移地址也可以用寄存器間接尋址或基址加變址尋址 , 讀者可自行考慮 。邏輯右移 jnc add1 jmp word ptr [bx] 。 ?返回 PUSHAD POPAD ( 386指令) ? 子程序調(diào)用(中斷調(diào)用):隱含使用堆棧保存返回地址 call near ptr subp (1) 保存返回地址 (2) 轉(zhuǎn)子程序 (IP) ← subp 的偏移地址 call far ptr subp (1) 保存返回地址 (2) 轉(zhuǎn)子程序 (CS) ← subp的段地址 (IP) ← subp的偏移地址 (IP) (SP)→ (IP) (SP)→ (CS) 子程序的調(diào)用和返回 ?中斷調(diào)用 INT n ( n : 中斷類型號(hào)) (1) 保存現(xiàn)場(chǎng)和返回地址( FLAGS,CS,IP入棧) (2) 轉(zhuǎn)中斷處理程序 (IP) ← (n*4) (CS) ← (n*4+2) ?子程序返回: ( 1) ret ( 返回地址出棧 ) ( 2) iret ( IP,CS,FLAGS出棧 ) (IP) (SP)→ (CS) (FLAGS) int 21H 子程序的參數(shù)傳送 ( 1) 通過寄存器傳送參數(shù) ( 2) 通過存儲(chǔ)區(qū)傳送參數(shù) *子程序和調(diào)用程序在同一程序模塊中 , 則子程序可 直接訪問模塊中的變量 。N個(gè)字節(jié) COUNTB EQU $ARRYA SUMB DW ? DATA ENDS STACK SEGMENT STACK DB 100DUP(?) TOP EQU 100 STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP LEA SI,ARRYA LEA DI,SUMA MOV CX,COUNTA CALL SUM LEA SI,ARRYB LEA DI,SUMB MOV CX,COUNTB CALL SUM MOV AH,4CH INT 21H HLT CODE ENDS SUM: PROC NEAR PUSH AX PUSH BX MOV AX,00H AGIN: MOV BL,[BI] MOV BH,0 ADD AX,BX INC SI LOOP AGIN MOV [DI],AX POP BX POP AX RET SUM ENDP END MAIN 例 3. 十進(jìn)制到十六進(jìn)制的轉(zhuǎn)換程序 ( 通過寄存器傳送變量 ) ( 該題已可以進(jìn)行講解 ) Decihex segment 。 Decibin proc near 。 9退出 cbw xchg ax, bx mov cx, 10d mul cx xchg ax, bx add bx, ax jmp newchar exit: ret decibin endp binihex proc near
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1