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

正文內(nèi)容

第3章匯編語言程序設(shè)計(jì)-資料下載頁(yè)

2025-07-20 10:15本頁(yè)面
  

【正文】 ends stack segment para stack ‘stack’ db 100 dup(?) stack ends code segment assume cs:code, ds:data, ss:stack 。以下是主過程 start proc far begin: push ds mov ax, 0 push ax 。為返回 DOS設(shè)置返回地址 COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 算術(shù)運(yùn)算程序設(shè)計(jì)( 7) mov ax, data mov ds, ax 。設(shè)置段寄存器初值 mov sign, 0 。置符號(hào)為初值 lea bx, mulnum mov ax, [bx] 。BAX mov dx, [bx+2] 。ADX mov si, [bx+4] 。DSI mov si, [bx+6] 。CDI cmp dx, 0 。檢驗(yàn)正或負(fù) jns other 。 為正時(shí)轉(zhuǎn)至 OTHRE not ax not dx add ax, 1 adc dx, 0 。負(fù)則取補(bǔ) not sign 。改變符號(hào)位 mov [bx], ax mov [bx+2], dx 。 暫存 COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 算術(shù)運(yùn)算程序設(shè)計(jì)( 8) other: cmp di, 0 。 檢查乘數(shù)符號(hào) jns gomul 。 為正時(shí)轉(zhuǎn)至 GOMUL not si not di add si, 1 adc di, 0 。為負(fù)則取補(bǔ) not sign ;實(shí)現(xiàn)符號(hào)運(yùn)算 gomul: call mulu32 。調(diào)用 32位無符號(hào)數(shù)乘法程序 cmp sign, 0 。檢查乘積的符號(hào) je done 。乘積為正則結(jié)束 not [bx+8] not [bx+0ah] not [bx+0ch] not [bx+0eh] add word ptr [bx+8],1 add word ptr [bx+0ah],0 adc word ptr [bx+0ch],0 adc word ptr [bx+0eh],0 。乘積取補(bǔ) done: ret start endp COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 算術(shù)運(yùn)算程序設(shè)計(jì)( 9) 。以下是 32位無符號(hào)數(shù)的乘法程序 mul32 proc mov ax, [bx] mul si mov [bx+8], ax mov [bx+0ah], dx mov ax, [bx+2] mul si add ax, [bx+0ah] adc dx, 0 mov [bx+0ah], ax mov [bx+0ch], dx mov ax, [bx] mul di add ax,[bx+0ah] adc dx, [bx+0ch] mov [bx+0ah],ax mov [bx+0ch],dx pushf COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 算術(shù)運(yùn)算程序設(shè)計(jì)( 10) mov ax,[bx+2] mul di popf adc ax,[bx+0ch] adc dx,0 mov [bx+0ch],ax mov [bx+0ch],dx ret mulu32 endp code ends end begin COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 分支程序設(shè)計(jì)( 1) ? 在一個(gè)實(shí)際的程序中,程序始終是直線執(zhí)行的情況是不多見的,通常都會(huì)有各種分支,例如變量 x的符號(hào)函數(shù)用下式表示 1 當(dāng) x0 y= 0 當(dāng) x=0 1 當(dāng) x0 ? 在程序中,要根據(jù) x的值給 y賦值 如圖所示 。 ? 先把變量 x從內(nèi)存中取出來,執(zhí)行一次 “ 與 ” 或 “ 或 ” 操作,就可以把 x值的特征反映到標(biāo)志位上。于是就可以判斷是否等于零,若是,則令 y=0。若否,再判斷是否小于零,若是,則令 y= 1。不是,就令 y= 1。 ? 相應(yīng)的程序?yàn)椋? X y ← 0 y ← 1 y ← 1 SIGEF: MOV AX, BUFFER OR AX,AX JE ZERO JNS PLUS MOV BX, 0FFH JMP CONTI ZERO: MOV BX, 0 JMP CONTI PLUS: MOV BX, 1 CONTI: COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 分支程序設(shè)計(jì)( 2) ? 例 1: 根據(jù) AL中的被置位的情況來控制轉(zhuǎn)移到 8個(gè)子程序R1~R8中的一個(gè) ( 在中斷響應(yīng) 時(shí) , 通過軟件查詢 , 從而轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序入口就類似于這種情況 ) 。 ? 如果 AL中為 00000001 則轉(zhuǎn)至 R1 ? 如果 AL中為 00000010 則轉(zhuǎn)至 R2 ? 如果 AL中為 00000100 則轉(zhuǎn)至 R3 ? 如果 AL中為 00001000 則轉(zhuǎn)至 R4 ? 如果 AL中為 00010000 則轉(zhuǎn)至 R5 ? 如果 AL中為 00100000 則轉(zhuǎn)至 R6 ? 如果 AL中為 01000000 則轉(zhuǎn)至 R7 ? 如果 AL中為 10000000 則轉(zhuǎn)至 R8 COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 分支程序設(shè)計(jì)( 3) 啟動(dòng) A 的 D 0 = 1 ? A 的 D 1 = 1 ? A 的 D 5 = 1 ? A 的 D 6 = 1 ? ( R1 ) 1 ( R1 ) 2 ( R2 ) 1 ( R2 ) 2 ( R8 ) 1 ( R8 ) 2 ? 實(shí)現(xiàn)上述要求的程序框圖如圖所示 ? 我們可以把 8個(gè)子程序的入口地址編成如圖所示的分支表。 COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 分支程序設(shè)計(jì)( 4) 根據(jù)流程圖可以寫出下程序: NAME BRANCH_PROG DATA SEGMENT BRTAB DW R11 。子程序 R1入口地址的 IP值 DW R12 。子程序 R1入口地址的碼段值 DW R21 DW R22 DW R31 DW R32 DW R41 DW R42 DW R51 DW R52 DW R61 DW R62 DW R71 DW R72 DW R81 DW R82 DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) TOP EQU $STACK STACK ENDS COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 分支程序設(shè)計(jì)( 5) CODE SEGMENT STACK PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV AX, TOP MOV SP, AX LEA BX, BRTAB 。設(shè)跳轉(zhuǎn)表的地址指針 GTBIT: RCR AL, 1 JC GETAD ;順序檢查 AL中各位的狀態(tài) INC BX INC BX INC BX INC BX JMP GTBIT GETAD: JMP DWORD PTR [BX] ;段間間接轉(zhuǎn)移 STARK ENDP CODE ENDS END BEGIN COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 循環(huán)程序設(shè)計(jì)( 1) ? 在程序中,往往要求某一段程序重復(fù)執(zhí)行多次 ,這時(shí)候可以利用循環(huán)程序結(jié)構(gòu)。一個(gè)循環(huán)結(jié)構(gòu)由以下幾部分組成: : 就是要求重復(fù)執(zhí)行的程序段部分 。 其中又分為:循環(huán)工作部分和循環(huán)控制部分 。 循環(huán)控制部分每循環(huán)一次檢查循環(huán)結(jié)束的條件 ,當(dāng)滿足條件時(shí)就停止循環(huán) ,往下執(zhí)行其他程序 。 : 在循環(huán)程序中必須給出循環(huán)結(jié)束的條件 ,否則程序就會(huì)進(jìn)入死循環(huán) 。 常見的循環(huán)是計(jì)數(shù)循環(huán) ,當(dāng)循環(huán)了一定次數(shù)后就結(jié)束循環(huán) .在微型機(jī)中 ,常用一個(gè)內(nèi)部寄存器 (或寄存器對(duì) )作為計(jì)數(shù)器 , 通常這個(gè)計(jì)數(shù)器的初值置以循環(huán)次數(shù) ,每循環(huán)一次令其減 1,當(dāng)計(jì)數(shù)器減為 0時(shí) ,就停止循環(huán) 。 也可以初值置 0,每循環(huán)一次加 1,再與循環(huán)次數(shù)相比較 ,若兩者相等就停止循環(huán) 。 循環(huán)結(jié)束條件還可以有多種 ,下面結(jié)合例子分別介紹 。 : 用于循環(huán)過程中的工作單元 ,在循環(huán)開始時(shí)往往要置以初態(tài) ,即分別給他們賦一個(gè)初值。循環(huán)初態(tài)又可以分成兩部分 ,一是循環(huán)工作部分初態(tài) ,另一是結(jié)束條件的初態(tài),例如 ,要設(shè)地址指針 ,要使某些寄存器清零 ,或設(shè)某些標(biāo)志等等。循環(huán)結(jié)束條件的初態(tài)往往置以循環(huán)次數(shù)。置初態(tài)也是循環(huán)程序重要的一部分 ,不注意往往容易出錯(cuò)。 COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 循環(huán)程序設(shè)計(jì)( 2) ? 在循環(huán)程序中 ,控制循環(huán)的方法因要求不同而有若干中 。 循環(huán) ? 這是一種最常用也是最普通的循環(huán)控制循環(huán)的方法 ? 例 1:在一串給定個(gè)數(shù)的數(shù)中尋找最大值(或最小值 ),放至指定的存儲(chǔ)單元。每個(gè)數(shù)用 16位表示。 NAME SEARCH_MAX DATA SEGMENT BUFFER DW X1, X2, .... Xn COUNT EQU $BUFFER MAX DW ? DATA ENDS STACK SEGMENT PARA STACK 39。STACK39。 DB 64 DUP (?) TOP EQU $STACK STACK ENDS CODE SEGMENT START PROC FAR ASSUME CS: CODE, DS: DATA, SS: STACK BEGIN: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1