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

正文內(nèi)容

第4章:匯編語言程序設(shè)計lyzv10-資料下載頁

2025-08-01 15:11本頁面
  

【正文】 MOV DS, AX ? ┆ ? MOV AL, N ? ADD AL, AL ? MOV BL, AL ? MOV BH, 0 ? JMP TAB[BX] ? P1: …… ? ┆ ? JMP EXIT ? P2: …… ? ┆ ? JMP EXIT ? P2: …… ? ┆ ? JMP EXIT ? P3: …… ? ┆ ? JMP EXIT ? ┆ ? P8: …… ? ┆ ? EXIT: MOV AH, 4CH ? INT 21H ? CODE ENDS ? END START ? 上述程序中的無條件轉(zhuǎn)移指令的轉(zhuǎn)移地址采用的是變址尋址 。 同理 , 轉(zhuǎn)移地址也可以用寄存器間接尋址或基址加變址尋址 , 讀者可自行考慮 。 例 1. 設(shè)有數(shù)組 x(x1, … , x10) 和 y(y1, … , y10) , 編程計算 z1=x1 + y1 z2=x2 + y2 z3=x3 - y3 z4=x4 - y4 z5=x5 - y5 z6=x6 + y6 z7=x7 - y7 z8=x8 - y8 z9=x9 + y9 z10=x10 + y10 邏輯尺: 0 0 1 1 0 1 1 1 0 0 1 減法 0 加法 x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 logic_rule dw 00dch ;邏輯尺數(shù)字 …… mov bx, 0 mov cx, 10 ;共 10組運(yùn)算 mov dx, logic_rule next: mov ax, x[bx] shr dx, 1 ;邏輯右移一位 jc subtract ;有進(jìn)位作減法,否則作加法 add ax, y[bx] jmp short result 。 向前引用 subtract: sub ax, y[bx] result: mov z[bx], ax add bx, 2 loop next 例 2. 根據(jù) AL寄存器中哪一位為 1( 從低位到高位 ) 把程序 轉(zhuǎn)移到 8個不同的程序分支去 。 ( 寄存器間接尋址 ) branch_table dw routine1 dw routine2 dw routine3 dw routine4 dw routine5 dw routine6 dw routine7 dw routine8 clc cmp al, 0 je continue ; ( =jz continue) lea bx, branch_table L : shr al, 1 。邏輯右移 jnc add1 jmp word ptr [bx] 。段內(nèi)間接轉(zhuǎn)移 add1: add bx, 2 jmp L continue: …… routine1: …… routine2: …… …… 該程序沒問題 D 子程序的設(shè)計方法 子程序的功能:具有公用性 、 相對獨(dú)立程序段設(shè)計為功能子程序 。 設(shè)計 任務(wù):實(shí)現(xiàn)功能 、 技術(shù)指標(biāo) 、 參數(shù)傳遞的方式 。 結(jié)構(gòu) ?名稱及說明 過程 ( 子程序 ) 定義偽操作 procedure_name PROC NEAR ( FAR ) …… procedure_name ENDP ( 1) NEAR屬性:調(diào)用程序和子程序在同一代碼段中 ( 段內(nèi)調(diào)用 ) ( 2) FAR屬性:調(diào)用程序和子程序不在同一代碼段 ( 段間調(diào)用 ) ?保存與恢復(fù) subt proc far push ax push bx push cx push dx ...... pop dx pop cx pop bx pop ax ret subt endp ?功能程序 子程序完成的功能 。 ?返回 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 : 中斷類型號) (1) 保存現(xiàn)場和返回地址( 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) 通過存儲區(qū)傳送參數(shù) *子程序和調(diào)用程序在同一程序模塊中 , 則子程序可 直接訪問模塊中的變量 。 *子程序和調(diào)用程序不在同一程序模塊中 , 則有兩種 傳送方式:建立公共數(shù)據(jù)區(qū)和使用外部符號 。 ( 3)通過地址表傳送參數(shù)地址 ( 4)通過堆棧傳送參數(shù)或參數(shù)地址 例 . 子程序 SUM功能是對字節(jié)數(shù)組求和 , 主程序兩次調(diào)用子程序 ,實(shí)現(xiàn)對不同數(shù)組的求和 . (通過寄存器傳送變量 ) DATA SEGMENT ARRYA DB A1,A2,A3,A4, 。M個字節(jié) COUNTA EQU $ARRYA SUMA DW ? ARRYB DB B1,B2,B3, 。N個字節(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 。 10?16 assume cs: decihex main proc far push ds sub ax, ax push ax ;保護(hù)返回地址 repeat: call decibin 。 10?2 call crlf call binihex 。 2?16 call crlf jmp repeat ret ;同前面保護(hù)返回地址的語句相對應(yīng) main endp ; 10?2:例如,將 369轉(zhuǎn)換成二進(jìn)制數(shù),可先將累加和賦為 0, 再計算 (((0*10+3)*10+6)*10+9),結(jié)果就是二進(jìn)制數(shù)。 Decibin proc near 。 mov bx, 0 newchar: mov ah, 1 int 21h 。從鍵盤上接收要轉(zhuǎn)換的數(shù)字 sub al, 30h jl exit 。 0退出 cmp al, 9d jg exit 。 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 。 2?16 mov ch, 4 rotate: mov cl, 4 rol bx, cl ; 在 bx中,將最高的四位循環(huán)移到最低的四位上。 mov al,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1