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

正文內容

匯編語言第六章:循環(huán)與分支程序設計-文庫吧

2025-09-15 16:38 本頁面


【正文】 位 JNC NEXT ; CF≠1時 , 轉向 NEXT再次循環(huán) INC CX ; CF=1, 計數(shù)器 (CX)←(CX) +1 NEXT: JMP AGAIN ; 再次循環(huán) QUIT : ? 上述程序為 當型循環(huán) 程序結構: 先判斷條件,后執(zhí)行循環(huán) 。 課堂練習 : 采用循環(huán)結構完成自然數(shù) 1到 100的求和運算。 next 當型循環(huán)與直到型循環(huán) : 存儲模型與簡化段定義偽指令 較新版本的匯編程序( )除支持完整段定義偽指令外,還提供了一種新的簡單易用的存儲模型和簡化的段定義偽指令。 1. 存儲模型偽指令 存儲模型的作用是什么呢?存儲模型決定一個程序的規(guī)模,也確定進行子程序調用、指令轉移和數(shù)據(jù)訪問的缺省屬性( NEAR或 FAR)。當使用簡化段定義的源程序格式時,在段定義語句之前必須有存儲模型 .MODEL語句,說明在存儲器中應如何安放各個段。 MODEL偽指令的常用格式如下: . MODEL 存儲模型 存儲模型 功 能 適用操作系統(tǒng) Tiny (微型 ) 所有數(shù)據(jù)和代碼都放在一個段內,其訪問都為NEAR型,整個程序 ≤64K,并會產生 .COM文件。 MSDOS Small (小型 ) 所有代碼在一個 64KB的段內,所有數(shù)據(jù)在另一個64KB的段內(包括數(shù)據(jù)段 ,堆棧段和附加段)。 MSDOS Windows Medium (中型 ) 所有代碼> 64K時可放在多個代碼段中,轉移或調用可為 FAR型。所有數(shù)據(jù)限在一個段內, DS可保持不變。 MSDOS Windows Compact(緊湊型 ) 所有代碼限在一個段內,轉移或調用可為 NEAR型。數(shù)據(jù)> 64K時,可放在多個段中。 MSDOS Windows Large (大型 ) 允許代碼段和數(shù)據(jù)段都可超過 64K,被放置在有多個段內,所以數(shù)據(jù)和代碼都是遠訪問。 MSDOS Windows Huge (巨型 ) 單個數(shù)據(jù)項可以超過 64K,其它同 Large模型 MSDOS Windows Flat (平展型 ) 所有代碼和數(shù)據(jù)放置在一個段中,但段地址是 32位的,所以整個程序可為 4GB。 MASM 型。 OS/2 WindowsNT 在 DOS下用匯編語言編程時,可根據(jù)程序的不同特點選擇前 6種模型,一般可以選用 SMALL模型。另外, TINY模型將產生 COM程序,其他模型產生 EXE程序。 FLAT模型只能運行在 32位 x86 CPU上, DOS下不允許使用這種模型。當與高級語言混合編程時,兩者的存儲模型應當一致 2. 簡化的段偽指令 簡化的段定義語句書寫簡短,語句 .CODE、 .DATA和 .STACK分別表示代碼數(shù)據(jù)段和堆棧段的開始,一個段的開始自動結束前面一個段。采用簡化段指令之前必須有存儲模型語句 .MODEL。 簡化段偽指令 功 能 注釋 .CODE [段名 ] 創(chuàng)建一個代碼段 段名為可選項,如不給出段名,則采用默認段名。對于多個代碼段的模型,則應為每個代碼段指定段名。 .DATA 創(chuàng)建一個數(shù)據(jù)段 段名是: _DATA .DATA? 創(chuàng)建無初值變量的數(shù)據(jù) 段 段名是: _BSS .FARDATA [段名 ] 建立有初值的遠調用數(shù) 據(jù)段 可指定段名,如不指定,則將以 FAR_DATA命名。 .FARDATA? [段名 ] 建立無初值的遠調用數(shù)據(jù)段 可指定段名,如不指定,則將以FAR_BSS命名。 .CONST 建立只讀的常量數(shù)據(jù)段 段名是: CONST .STACK [大小 ] 創(chuàng)建一個堆棧段并指定 堆棧段大小 段名是: stack。如不指定堆棧段大小,則缺省值為 1KB 3.與簡化段定義有關的預定義符號 匯編程序給出了與簡化段定義有關的一組預定義符號,它們可在程序中出現(xiàn),并由匯編程序識別使用。有關的預定義符號如下: ( 1) @code 由 .CODE 偽指令定義的段名或段組名。 ( 2) @data 由 .DATA 偽指令定義的段名,或由 .DATA 、 .DATA?、 .CONST和 .STACK所定義的段組名。 ( 3) @stack 堆棧段的段名或段組名。 在完整的段定義情況下,在程序的一開始,需要用段名裝入數(shù)據(jù)段寄存器,例 mov ax,data_seg1 mov ds,ax 若用簡化段定義,則數(shù)據(jù)段只用 .data來定義,而并未給出段名,此時可用 mov ax,@data mov ds,ax 這里預定義符號 @data就給出了數(shù)據(jù)段的段名。 返回 參考答案 2: .model small .code mov ax, @data mov ds, ax xor ax, ax mov cx, 100 again: add ax, cx loop again mov ax, 4c00h int 21h end 參考答案 1: .model small .data num dw 1 .code mov ax, @data mov ds, ax mov ax, 0 mov cx, 100 again: add ax, num inc num loop again mov ax, 4c00h int 21h end ( 下述例子可用 或 版匯編程序匯編 ) 思考題:顯示下面數(shù)組中的數(shù)據(jù): ARRAY DB 1, 3, 7, 8, 5, 4, 6, 8 第一章 基礎知識 第六章 循環(huán)與分支程序設計 循環(huán)程序設計方法 例 試編制一個程序把 BX寄存器內的二進制數(shù)用十六進制數(shù)的形式在屏幕上顯示出來。 code_seg segment main proc far assume cs:code_seg start: mov bx , 8222h mov ch , 4 。四位循環(huán)一次 , 共進行4次循環(huán)即可以 rotate: mov cl , 4 。循環(huán)高 4位到低 4位 rol bx , cl。對 BX進行循環(huán)操作 mov al , bl。 思路: 四位二進制對應一位十六進制。 循環(huán) 4次 每次循環(huán) 4位 高位先顯示: rol 判斷結果和 10比較。 第一章 基礎知識 第六章 循環(huán)與分支程序設計 and al , 0fh。取出要轉換的 4位二進制數(shù) , 存入 al寄存器中 cmp al , 10。判斷是否為十進制數(shù)制的字符 jae changetoa_f 。如果大于 10, 跳轉到 changetoa_f進行十六進制的轉換 add al , 30h 。09的十六進制轉換 jmp disp changetoa_f: add al , 37h 。af的十六進制轉換 disp: mov dl , al 。在屏幕上顯示結果 mov ah , 02 int 21h dec ch 。利用 dec 和 jnz來實現(xiàn)循環(huán)操作 , 代替 loop的功能 jnz rotate 第一章 基礎知識 第六章 循環(huán)與分支程序設計 mov ax , 4c00h int 21h main endp code_seg ends end start 。程序結束 例 在 ADDR單元中存放著數(shù) Y的地址,試編制一程序把 Y中 1的個數(shù)存入COUNT單元中。 算法:要測出 Y中 1的個數(shù)就應逐位測試,一個比較簡單的辦法是可根據(jù)最高有效位是否為 1來記數(shù),然后用移位的方法把各位數(shù)逐次移到最高位去。循環(huán)的結束可以用計數(shù)值為 16來控制,但更好的辦法是結合上述方法可以用測試數(shù)是否為 0來作為結束條件,這樣可以在很多情況下縮短程序的執(zhí)行時間。此外考慮到 Y本身為 0的可能性,應該采用 WHILE— DO的結構形式。 第一章 基礎知識 第六章 循環(huán)與分支程序設計 程序框圖 第一章 基礎知識 第六章 循環(huán)與分支程序設計 程序: 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 第一章 基礎知識 第六章 循環(huán)與分支程序設計 int 21h main endp code_seg ends end start 例 在附加段中有一個首地址為 LIST和未經排序的字數(shù)組,在數(shù)組的第一個字中存放著該數(shù)組的長度,數(shù)組的首地址已存放在 DI寄存器中。 AX寄存器中存放著一個數(shù)。要求編制一程序:在數(shù)組中查找該數(shù),如果找到此數(shù)則把它從數(shù)組中刪除。 算法: 這一程序應該首先查找數(shù)組中是否有 (AX),如果沒有則不對數(shù)組作任何處理就結束程序。如果找到這一元素則應把數(shù)組中位于其前 (指地址比該元素高 )的元素后移一個字 (即向低 地址方向移動 ),并修改數(shù)組長度值。如果找到的元素正好位于數(shù)組末尾,則不必移動任何元素,只要修改數(shù)組長度值就可以。這里第一部分的查找元素可以使用串處理指令,第二部分的刪除元素則可使用循環(huán)結構, 由于查找結束時就可以知道該元素的位置,因此可以作為循環(huán)次數(shù)已知的情況來設計。 第一章 基礎知識 第六章 循環(huán)與分支程序設計 流程圖: 第一章 基礎知識 第六章 循環(huán)與分支程序設計 程序: data_seg segment LIST dw 10,0,11,22,33,44,55,66,77,88,99 data_seg ends code_seg segment assume cs:code_seg , es:data_seg main proc far start: mov ax , data_seg。代碼段地址空間分配 mov es , ax cld;設置
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1