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

正文內(nèi)容

匯編語(yǔ)言第六章:循環(huán)與分支程序設(shè)計(jì)-在線(xiàn)瀏覽

2024-11-10 16:38本頁(yè)面
  

【正文】 0 0 0 0 B 逐位分離開(kāi) 并轉(zhuǎn)換為: 30 31 30 30 30 30 31 30 30 30 31 31 30 30 30 30 先將 ( num) ( DX) ,再討論如何分離開(kāi)各二進(jìn)制位并轉(zhuǎn)換為 ASCII碼 , 分析如下 : 根據(jù)上述分析 , 將 ( DX) 中的二進(jìn)制數(shù)依次 循環(huán)左移 1位 ,可以使得 各個(gè)數(shù)位的分離 ( AND) 和 ASCII碼轉(zhuǎn)換 ( ADD) 操作完全相同 , 便于組織循環(huán) , 并且 循環(huán)次數(shù)已知 ( 16次 ) 。 此例為條件循環(huán) 此例為計(jì)數(shù)循環(huán) next ( DX) = 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 ( ROL DX, 1 ) ? 0 0 0 0 0 0 0 1 ( AND ? , 1) 0 0 0 0 0 0 0 0 + 0 0 1 1 0 0 0 0 ( ADD ? , 30H) 0 0 1 1 0 0 0 0 30 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 ( ROL DX, 1) ? 0 0 0 0 0 0 0 1 ( AND) 0 0 0 0 0 0 0 1 + 0 0 1 1 0 0 0 0 ( ADD) 0 0 1 1 0 0 0 1 31 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 ( ROL DX, 1) ? 0 0 0 0 0 0 0 1 ( AND) 0 0 0 0 0 0 0 0 + 0 0 1 1 0 0 0 0 ( ADD) 0 0 1 1 0 0 0 0 … … 30 31 30 30 30 30 31 30 30 30 31 31 30 30 30 1. 2. 16. binbuf 返回 30 例 統(tǒng)計(jì) AX中的二進(jìn)制數(shù)含 “ 1”的總個(gè)數(shù) , 程序段如下: MOV CX, 0 AGAIN: AND AX, AX ; ( AX) =0? JZ QUIT ; 是 , 退出循環(huán) SAL AX, 1 ; 否 ,( AX) 的最高位移入 CF位 JNC NEXT ; CF≠1時(shí) , 轉(zhuǎn)向 NEXT再次循環(huán) INC CX ; CF=1, 計(jì)數(shù)器 (CX)←(CX) +1 NEXT: JMP AGAIN ; 再次循環(huán) QUIT : ? 上述程序?yàn)?當(dāng)型循環(huán) 程序結(jié)構(gòu): 先判斷條件,后執(zhí)行循環(huán) 。 next 當(dāng)型循環(huán)與直到型循環(huán) : 存儲(chǔ)模型與簡(jiǎn)化段定義偽指令 較新版本的匯編程序( )除支持完整段定義偽指令外,還提供了一種新的簡(jiǎn)單易用的存儲(chǔ)模型和簡(jiǎn)化的段定義偽指令。當(dāng)使用簡(jiǎn)化段定義的源程序格式時(shí),在段定義語(yǔ)句之前必須有存儲(chǔ)模型 .MODEL語(yǔ)句,說(shuō)明在存儲(chǔ)器中應(yīng)如何安放各個(gè)段。 MSDOS Small (小型 ) 所有代碼在一個(gè) 64KB的段內(nèi),所有數(shù)據(jù)在另一個(gè)64KB的段內(nèi)(包括數(shù)據(jù)段 ,堆棧段和附加段)。所有數(shù)據(jù)限在一個(gè)段內(nèi), DS可保持不變。數(shù)據(jù)> 64K時(shí),可放在多個(gè)段中。 MSDOS Windows Huge (巨型 ) 單個(gè)數(shù)據(jù)項(xiàng)可以超過(guò) 64K,其它同 Large模型 MSDOS Windows Flat (平展型 ) 所有代碼和數(shù)據(jù)放置在一個(gè)段中,但段地址是 32位的,所以整個(gè)程序可為 4GB。 OS/2 WindowsNT 在 DOS下用匯編語(yǔ)言編程時(shí),可根據(jù)程序的不同特點(diǎn)選擇前 6種模型,一般可以選用 SMALL模型。 FLAT模型只能運(yùn)行在 32位 x86 CPU上, DOS下不允許使用這種模型。采用簡(jiǎn)化段指令之前必須有存儲(chǔ)模型語(yǔ)句 .MODEL。對(duì)于多個(gè)代碼段的模型,則應(yīng)為每個(gè)代碼段指定段名。 .FARDATA? [段名 ] 建立無(wú)初值的遠(yuǎn)調(diào)用數(shù)據(jù)段 可指定段名,如不指定,則將以FAR_BSS命名。如不指定堆棧段大小,則缺省值為 1KB 3.與簡(jiǎn)化段定義有關(guān)的預(yù)定義符號(hào) 匯編程序給出了與簡(jiǎn)化段定義有關(guān)的一組預(yù)定義符號(hào),它們可在程序中出現(xiàn),并由匯編程序識(shí)別使用。 ( 2) data 由 .DATA 偽指令定義的段名,或由 .DATA 、 .DATA?、 .CONST和 .STACK所定義的段組名。 在完整的段定義情況下,在程序的一開(kāi)始,需要用段名裝入數(shù)據(jù)段寄存器,例 mov ax,data_seg1 mov ds,ax 若用簡(jiǎn)化段定義,則數(shù)據(jù)段只用 .data來(lái)定義,而并未給出段名,此時(shí)可用 mov ax,data mov ds,ax 這里預(yù)定義符號(hào) data就給出了數(shù)據(jù)段的段名。 code_seg segment main proc far assume cs:code_seg start: mov bx , 8222h mov ch , 4 。循環(huán)高 4位到低 4位 rol bx , cl。 思路: 四位二進(jìn)制對(duì)應(yīng)一位十六進(jìn)制。 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) and al , 0fh。判斷是否為十進(jìn)制數(shù)制的字符 jae changetoa_f 。09的十六進(jìn)制轉(zhuǎn)換 jmp disp changetoa_f: add al , 37h 。在屏幕上顯示結(jié)果 mov ah , 02 int 21h dec ch 。程序結(jié)束 例 在 ADDR單元中存放著數(shù) Y的地址,試編制一程序把 Y中 1的個(gè)數(shù)存入COUNT單元中。循環(huán)的結(jié)束可以用計(jì)數(shù)值為 16來(lái)控制,但更好的辦法是結(jié)合上述方法可以用測(cè)試數(shù)是否為 0來(lái)作為結(jié)束條件,這樣可以在很多情況下縮短程序的執(zhí)行時(shí)間。 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 程序框圖 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) 程序: data_seg segment Y equ 020FH number dw Y addr dw number count dw ? 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 ,0 mov bx ,addr mov ax ,[bx] repeat: test ax,0ffffh jz result jns shift inc cx shift: shl ax ,1 jmp repeat result: mov count , cx mov ax,4c00h 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) int 21h main endp code_seg ends end start 例 在附加段中有一個(gè)首地址為 LIST和未經(jīng)排序的字?jǐn)?shù)組,在數(shù)組的第一個(gè)字中存放著該數(shù)組的長(zhǎng)度,數(shù)組的首地址已存放在 DI寄存器中。要求編制一程序:在數(shù)組中查找該數(shù),如果找到此數(shù)則把它從數(shù)組中刪除。如果找到這一元素則應(yīng)把數(shù)組中位于其前 (指地址比該元素高 )的元素后移一個(gè)字 (即向低 地址方向移動(dòng) ),并修改數(shù)組長(zhǎng)度值。這里第一部分的查找元素可以使用串處理指令,第二部分的刪除元素則可使用循環(huán)結(jié)構(gòu), 由于查找結(jié)束時(shí)就可以知道該元素的位置,因此可以作為循環(huán)次數(shù)已知的情況來(lái)設(shè)計(jì)。代碼段地址空間分配 mov es , ax cld;設(shè)置 DF=0, 地址自動(dòng)遞增操作 mov ax ,33 ;設(shè)置 AX寄存器的數(shù)值 lea di , LIST 第一章 基礎(chǔ)知識(shí) 第六章 循環(huán)與分支程序設(shè)計(jì) push di;將 LIST的首地址壓棧 , 為將來(lái)改變數(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ì) 例 試編制一程序;從鍵盤(pán)輸入一行字符,要求第一個(gè)鍵入的字符必須是空格符,如不是則退出程序;如是則開(kāi)始接收留入的字符并順序存放在首地址為 BUFFER的緩沖區(qū)中(空格符不存人),直到接收到第二個(gè)空格符時(shí)退出程序。 第一章 基礎(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 ;從鍵盤(pán)輸入一個(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 cod
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1