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

正文內(nèi)容

匯編語言第六章:循環(huán)與分支程序設(shè)計(jì)(編輯修改稿)

2024-10-27 16:38 本頁面
 

【文章內(nèi)容簡介】 DF=0, 地址自動(dòng)遞增操作 mov ax ,33 ;設(shè)置 AX寄存器的數(shù)值 lea di , LIST 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) push di;將 LIST的首地址壓棧 , 為將來改變數(shù)組元素個(gè)數(shù) , 就可以彈出該 ;地址 mov cx , es:[di];數(shù)組個(gè)數(shù)放入 CX中 add di , 2 repnz scasw;將 AX與 ES: [DI]中的元素進(jìn)行比較 , 若相等則跳轉(zhuǎn)到 DELETE ;結(jié)束否則 je delete pop di jmp short exit delete: jcxz del_last;判斷要?jiǎng)h除的元素是否為最后的數(shù)組元素 , 是就跳轉(zhuǎn)到 ; DEL_LAST執(zhí)行 del_next: 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) mov bx , es:[di];數(shù)組元素向前移動(dòng) mov es:[di2] , bx add di , 2 loop del_next del_last: pop di dec word ptr es:[di];改變數(shù)組元素的大小 exit: mov ax , 4c00h int 21h main endp code_seg ends end start 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 例 試編制一程序;從鍵盤輸入一行字符,要求第一個(gè)鍵入的字符必須是空格符,如不是則退出程序;如是則開始接收留入的字符并順序存放在首地址為 BUFFER的緩沖區(qū)中(空格符不存人),直到接收到第二個(gè)空格符時(shí)退出程序。 算法: 這一程序要求接收的字符從空格符開始又以空格符結(jié)束,因此程序中必須區(qū)分所接收的字符是否是第一個(gè)字符,為此設(shè)立作為標(biāo)志的存儲(chǔ)單元 FLAG,一開始將其置為 0,接收第一個(gè)字符后可將其置 1。 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) data_seg segment buffer db 100 dup(?) flag db ? data_seg ends code_seg segment assume cs:code_seg , ds:data_seg main proc far start: mov ax ,data_seg mov ds ,ax lea bx ,buffer mov flag ,0 ; FLAG初始化為 0, 準(zhǔn)備接收第一個(gè)字符 next: mov ah ,01 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) int 21h ;從鍵盤輸入一個(gè)字符 , 存放在 AL寄存器中 test flag ,01h;判斷是否為第一個(gè)字符 jnz follow;不是第一個(gè)字符跳轉(zhuǎn)到 FOLLOW cmp al,20h;是第一個(gè)字符 , 判斷該字符是否為空格 jnz exit mov flag ,1 jmp next follow: cmp al ,20h;判斷是否為空格 jz exit;是空格就退出 mov [bx],al;不是就將該字符的 ASC碼存入緩沖區(qū)內(nèi) inc bx jmp next 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) exit: mov ax , 4c00h int 21h main endp code_seg ends end start 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) ( 3)多重循環(huán) 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 例 有一個(gè)首地址為 A的 N字?jǐn)?shù)組,請(qǐng)編制程序使該數(shù)組中的數(shù)按照從大到小的次序排序。 算法 : 我們采用起泡排序算法從第一個(gè)數(shù)開始依次對(duì)相鄰兩個(gè)數(shù)進(jìn)行比較,如次序?qū)t不做任何操作;如次序不對(duì)則使這兩個(gè)數(shù)交換位置。下表表示了這種算法的例子,可以看出.在做了第一遍的 (N一 1)次比較后,最小的數(shù)已經(jīng)放到了最后,所以第二遍比較只需要考慮 (N1)個(gè)數(shù),即只需要比較 (N一 2)次,第三遍則只需要做 (N一 3)次比較 …… 總共最多 (N— 1)遍比較就可以完成排序。 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) loop1:mov dx , cx mov bx , 0 loop2:mov ax ,a[bx] cmp ax ,a[bx+2] jge continue xchg ax ,a[bx+2] mov a[bx],ax continue: add bx ,2 loop loop2 mov cx ,dx loop loop1 mov cx ,num 程序: data_seg segment num dw 10 a dw 12,14,9,10,3,81,10,4,88,66 data_seg ends code_seg segment assume cs:code_seg , ds:data_seg main proc far start: mov ax , data_seg mov ds , ax mov cx , num dec cx 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) mov si ,offset a mov bl ,0ah call dispchar mov bl, 0dh call dispchar dispdec2: mov bx ,[si] call disp mov bl,39。 39。 call dispchar add si ,2 loop dispdec2 mov ax ,4c00h int 21h main endp code_seg ends end start 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 第二節(jié) 分支結(jié)構(gòu)程序設(shè)計(jì) 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) ( 2) 分支程序設(shè)計(jì)方法 例 在附加段中,有一個(gè)按從小到大順序排列的無符號(hào)數(shù)的數(shù)組,其首地址存放在 Dl寄存器中, 數(shù)組中的第一個(gè)單元存放著數(shù)組長度。 在 AX中有一個(gè)無符號(hào)數(shù),要求在數(shù)組中查找 (AX),如找到則使 CF= 0,并在 SI中給出該元素在數(shù)組中的偏移地址,如末找到則使 CF= 1。 算法: 我們已經(jīng)遇到過多個(gè)表格查找的例子,都是使用順序查找的方法,本例是一個(gè)已經(jīng)排序的數(shù)組,可以采用 折半查找法 以提高查找效率。折半查找法先取有序數(shù)組的中間元素與查找值進(jìn)行比較,如相等則查找成功,如查找值大于中間元素,則再取高半部的中間元意與查找值相比較;如查找值小于中間元素,則再取低半部的中間元素與查找值相比較,如此重復(fù)直到查找成功或最終未找到該效 (查找不成功 )為止。折半查找法的效率高于順序查找法。 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 流程圖 : 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 程序: 。本模塊功能是用寄存器 AX的內(nèi)容對(duì)字?jǐn)?shù)組 (從小到大順序排列 )進(jìn)行折半查找 。其中查找的數(shù)組首地址位于寄存器 DI內(nèi) 。數(shù)組的第一個(gè)元素為數(shù)組的長度 ,其余的為數(shù)組的具體內(nèi)容 dseg segment start_addr dw ?。 保存數(shù)組首地址用的變量 dseg ends cseg segment assume cs:cseg , ds:dseg b_search proc near push ds push ax mov ax ,dseg mov ds ,ax 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 。第一步 。首先判斷 AX寄存器的數(shù)是否在該數(shù)組的范圍內(nèi) . 。即要判斷是否小于數(shù)組元素的最小數(shù)或大于數(shù)組元素的最大數(shù) cmp ax ,es : [di+2]。和最小數(shù)據(jù)進(jìn)行比較 ja chk_last。若大于最小數(shù) ,跳轉(zhuǎn)到 CHK_LAST, 同時(shí) CF 為 0 lea si ,es : [di+2]。先把最小元素的地址存入 SI寄存器中 je exit_b。在判斷是否和最小元素相等 , 如果相等結(jié)束 stc。否則小于最小元素 , 設(shè)置 CF為 1 jmp exit_b。 程序結(jié)束 chk_last: mov si,ES : [di]。si存放數(shù)組元素個(gè)數(shù) shl si,1。也就是 2。 其結(jié)果就是數(shù)組占用的字節(jié)數(shù)量 add si,di。SI為數(shù)組下標(biāo)最大的元素的地址 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) cmp ax,es:[si]。和最大數(shù)進(jìn)行比較 , 同時(shí) CF為 1 jb search。若小于最大數(shù) ,就進(jìn)入折半查找 je exit_b。//否則等于最大值則退出結(jié)束 ,表明 AX的數(shù)據(jù)與最大數(shù)組數(shù)據(jù)相同 . stc。置 CF為 1 jmp exit_b 。第一步結(jié)束 。第二步 。折半查找功能 search: mov start_addr,di。保存寄存器 DI的字?jǐn)?shù)組的首地址 mov si,[di]。讀取數(shù)組長度 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) even_idx: test si,1。判斷是否為奇數(shù) .注意數(shù)組長度的地址指定數(shù)組中間的元素 (因?yàn)閿?shù)組是字?jǐn)?shù)組 ) jz add_idx inc si。奇數(shù)就要加 1,以便能取到完整的數(shù)據(jù) add_idx: add di,si。數(shù)組首地址加上中間數(shù)組的偏移量 ,得到中間數(shù)組的有效地址 pare: cmp ax,es : [di]。和寄存器數(shù)據(jù)進(jìn)行比較 je all_done。相等 ,就結(jié)束操作 ,同時(shí) CF為 0 ja highter。大就查找高段數(shù)組 cmp si,2 jne idx_ok 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) no_match: stc je all_done 。寄存器 si和 2進(jìn)行比較的結(jié)果 , 程序退出的標(biāo)志 idx_ok: shr si,1 test si,1 jz sub_idx inc si sub_idx: sub di,si jmp short pare 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) higher: cmp si,2。 je no_match shr si,1。數(shù)據(jù)元素除以 2, 減半 jmp short even_idx all_done mov si,di mov di,start_addr exit_b: ret b_search endp cseg ends end b_search 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) ( 3)跳躍表法 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 例:根據(jù) bx的數(shù)據(jù)進(jìn)行跳轉(zhuǎn),從低位到高位分別判斷 bx寄存器的位數(shù)是否為 1,為 1跳轉(zhuǎn),否則繼續(xù)判斷,直到 bx寄存器為 0。 程序: b_a segment b_t dw r1 dw r2 dw r3 dw r4 dw r5 dw r6
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1