《匯編語言》-第6章-包含多個段的程序_第1頁
《匯編語言》-第6章-包含多個段的程序_第2頁
《匯編語言》-第6章-包含多個段的程序_第3頁
《匯編語言》-第6章-包含多個段的程序_第4頁
《匯編語言》-第6章-包含多個段的程序_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章包含多個段的程序掌握在程序中同時使用數(shù)據(jù)段、堆棧段和代碼段。理解內(nèi)存中不同段的分配原理。1補全下面程序?qū)?nèi)存0:300H—0:31FH處的數(shù)據(jù)復制到0:200H處。XX00300HXX00301HXX00302HXX00303HXX00304HXX00305HXX00306H.........XX0031EHXX0031FH00200H00201H00202H00203H00204H00205H00206H...0021EH0021FHAssume cs:codeCode segment movax,

movds,ax movax,0020h moves,ax movbx,0 movcx,

S: moval,[bx] moves:[bx],al incbx loops movax,4c00h int21hCode endsend0030h0020h2補全下面程序?qū)ⅰ癿ovax,4c00h”之前的指令復制到內(nèi)存0:200H處。XXXXXXXXXXXXXX......XXXX00200H00201H00202H00203H00204H00205H00206H...0021EH0021FHAssume cs:codeCode segment movax,

movds,ax movax,0020h moves,ax movbx,0 movcx,

S: moval,[bx] moves:[bx],al incbx loops movax,4c00h int21hCode endsendCS23PSPCS:0DS:0DS:FF3一、在代碼段中使用數(shù)據(jù)(將數(shù)據(jù)定義在代碼段中)例:計算以下8個數(shù)據(jù)的和,結(jié)果保存在AX中:0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CBAH,0987H。思路1:MOVAX,0ADDAX,0123HADDAX,0456HADDAX,0789H . . .ADDAX,0CBAHADDAX,0987H思路2:MOVAX,XXXXHMOVDS,AXMOVBX,0MOVCX,nMOVAX,0S:ADDAX,[BX]ADDBX,2LOOPS23XXXX0156048907..094將數(shù)據(jù)定義在代碼段中ASSUME CS:CODECODE SEGMENT DW 0123H,0456H,0789H, 0ABCH,0DEFH, 0FEDH,0CBAH,0987H MOV BX,0 MOV AX,0 MOV CX,8S: ADD AX,CS:[BX] ADD BX,2 LOOP S MOV AX,4C00H INT 21HCODE ENDSEND 定義數(shù)據(jù)偽指令:DW—字型數(shù)據(jù)DB—字節(jié)型數(shù)據(jù)DD—雙字數(shù)據(jù)格式:DW(DB)數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3,……23015604..BA0C8709BB0000B80000..CS:0CS:0F5ASSUME CS:CODECODE SEGMENT DW0123H,0456H,0789H,0ABCH, 0DEFH,0FEDH,0CBAH,0987HSTART: MOV BX,0 MOV AX,0 MOV CX,0S: ADD AX,CS:[BX] ADD BX,2 LOOP S MOV AX,4C00H INT 21HCODE ENDSEND START

END 標號標號—為程序中第一條要執(zhí)行的指令的標號。在編譯中向編譯器提供程序的入口地址和結(jié)束地址。6二、在代碼段中使用棧利用堆棧,編程將程序中定義的數(shù)據(jù)逆序存放。Assume cs:codeCode segmentDw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hCode endsend23015604..數(shù)據(jù)BA0C8709..CS:0CS:0FDw 0,0,0,0,0,0,0,00000……0000CS:10CS:1F棧段Start: movax,cs movss,ax movsp,

movbx,0 movcx,8S: pushcs:[bx] addbx,2 loops movbx,0 movcx,8S0: popcs:[bx] addbx,2 loops0 movax,4c00h int21h Code endsEnd start20h7檢測點6.1

補全程序,使下面程序?qū)崿F(xiàn)依次用內(nèi)存0:0—0:F單元中的內(nèi)容改寫程序中的數(shù)據(jù)。Assume cs:codeCode segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hStart: movax,0 movds,ax movbx,0 movcx,8S: movax,[bx]

addbx,2 loops mov ax,4c00h int 21hCode endsEnd startMovcs:[bx],ax8檢測點6.2

補全程序,使下面程序?qū)崿F(xiàn)依次用內(nèi)存0:0—0:F單元中的內(nèi)容改寫程序中的數(shù)據(jù),數(shù)據(jù)的傳送用棧來進行,??臻g設(shè)置在程序內(nèi)。dw

0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0Start: movax,

movss,ax movsp,

movax,0 movds,ax mov bx,0 mov cx,8S: push [bx]

add bx,2 loop s mov ax,4c00h int 21hcs26(1Ah)popcs:[bx]9三、將數(shù)據(jù)、代碼、棧放入不同的段1、定義多個段的方法:同定義代碼段一樣,我們可以分別定義數(shù)據(jù)和棧段。ASSUME CS:CODE,DS:DATA,SS:STACKSTACK SEGMENT |STACK ENDSDATA SEGMENT |DATA ENDSCODE SEGMENT |CODE ENDS |2、對段地址的引用:每個段的名稱對應著該段的段地址。103、“代碼段”、“數(shù)據(jù)段”、“棧段”完全是我們的安排:數(shù)據(jù)、堆棧、代碼在加載到內(nèi)存時是在地址連續(xù)的一段內(nèi)存空間上。我們在源程序中為每個段起上名字只是為了便于閱讀程序,并可以借用該名字(標號)所在的段地址。我們在源程序中用偽指令ASSUMECS:CODE,DS:DATA,SS:STACK進行段分配后,CPU并不能自動將段寄存器指向該段。程序剛加載到內(nèi)存時,CS可根據(jù)END標號來指向程序入口地址,而DS和ES的值為PSP的段地址;SS為DS+10H。所以在源程序中我們要通過指令初始化DS,ES和SS的值。11匯編語言源程序的結(jié)構(gòu)

一般來說,一個完整的匯編源程序應由三個程序段組成,即代碼段、數(shù)據(jù)段和堆棧段,每個段都以SEGMENT開始,以ENDS結(jié)束,代碼段包含程序要執(zhí)行的指令;堆棧段用來在內(nèi)存中建立一個堆棧區(qū);數(shù)據(jù)段用來在內(nèi)存中建立一個適當容量的工作區(qū),以存放程序中所需的數(shù)據(jù)。注意:一個源程序中,代碼段是必須的,而數(shù)據(jù)段和堆棧段可以沒有或有其中一個。段定義時一般最后定義代碼段。ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTACK SEGMENT DB 500 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論