IBM-PC匯編語言程序設(shè)計(第二版)電子教案 第4章_第1頁
IBM-PC匯編語言程序設(shè)計(第二版)電子教案 第4章_第2頁
IBM-PC匯編語言程序設(shè)計(第二版)電子教案 第4章_第3頁
IBM-PC匯編語言程序設(shè)計(第二版)電子教案 第4章_第4頁
IBM-PC匯編語言程序設(shè)計(第二版)電子教案 第4章_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 匯編程序功能 偽操作 匯編語言程序格式 匯編語言程序的上機(jī)過程,第4章 匯編語言程序格式,1. 程序運(yùn)行步驟及生成的文件,myfile.asm,編輯程序,匯編程序,連接程序,myfile.crf,otherfiles.obj,myfile.lst,myfile.obj,myfile.map,myfile.exe,建立, 運(yùn)行匯編語言程序,CEDIT MYFILE . ASM CMASM MYFILE . ASM Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981,1988.All right

2、s reserved. Object filename MYFILE.OBJ: Source listing NUL.LST: MYFILE.LST Cross-reference NUL.CRF: 47962 + 413345Bytes symbol space free 0 Warning Errors 0 Severe Errors CLINK MYFILE . OBJ Microsoft (R) Overlay Linker Version 3.64 Copyright (C) Microsoft Corp 1983-1988. All rights reserved. Run Fil

3、e MYFILE.EXE: List File NUL.MAP: Libraries .LIB: LINK : warning L4021: no stack segment CMYFILE,2. 匯編程序功能,匯編程序的主要功能: 檢查源程序,給出出錯信息。 產(chǎn)生目標(biāo)文件(.obj)和列表文件(.lst)。 展開宏指令。,Directives,.8086 選擇 8086 指令系統(tǒng) .286 選擇 80286 指令系統(tǒng) .286P 選擇保護(hù)模式下的 80286 指令系統(tǒng) .386 選擇 80386 指令系統(tǒng) .386P 選擇保護(hù)模式下的 80386 指令系統(tǒng) .486 選擇 80486 指令系

4、統(tǒng) .486P 選擇保護(hù)模式下的 80486 指令系統(tǒng) .586 選擇 Pentium 指令系統(tǒng) .586P 選擇保護(hù)模式下的 Pentium 指令系統(tǒng), 處理器選擇偽操作:, 段定義偽操作:,完整的段定義格式,data segment ; 定義數(shù)據(jù)段 data ends ;- extra segment ; 定義附加段 extra ends ;- code segment ; 定義代碼段 assume cs:code, ds:data, es:extra start: mov ax, data mov ds, ax ; 段地址 段寄存器 code ends end start,PSP,DS

5、ES,SS,CS,EXE程序的內(nèi)存映象圖,裝入模塊,文件頭, code segment main proc far assume start: push ds mov ax, 0 push ax ret main endp code ends end start, code segment main proc far assume start: mov ax,4c00h int 21h main endp code ends end start,段名 SEGMENT 定位類型 組合類型 使用類型 類別 ; 語句序列 段名 ENDS,定位類型 align_type PARA BYTE WORD

6、DWORD PAGE 組合類型 combine_type PRIVATE PUBLIC COMMON STACK AT exp 使用類型 use_type USE16 USE32 (4) 類別 class,存儲模式與簡化段定義偽操作,(1) MODEL 偽操作 .MODEL 存儲模式 ,語言類型 ,操作系統(tǒng)類型 ,堆棧選項 存儲模式:tiny small medium compact large huge flat,.model small .stack 100H .data .code .startup .exit 0 end,(2) 簡化的段定義偽操作 .code name .data .

7、data? .fardata name .fardata? name .const .stack size,段組定義偽操作,data1 segment word const1 dw 100 data1 ends data2 segment word var1 dw ? data2 ends datagroup group data1,data2 code segment assume cs:code, ds:datagroup,mov ax, datagroup mov ds, ax mov ax, const1 mov var1, ax mov ax, 4c00h int 21h code

8、ends end start,TITLE text NAME module_name END label . STARTUP . EXIT return_value , 程序開始和結(jié)束偽操作:, 數(shù)據(jù)定義及存儲器分配偽操作:,變量 助記符 操作數(shù) , 操作數(shù) , ; 注釋 助記符:DB DW DD DF DQ DT,DATA_BYTE DB 10,4,10H,? DATA_WORD DW 100,100H,-5,?,DATA_BYTE ,DATA_WORD ,例:,ARRAY DB HELLO DB AB DW AB,ARRAY ,PAR1 DW 100,200 PAR2 DW 300,400

9、 ADDR_TABLE DW PAR1,PAR2 VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3),OPER1 DB ?, ? OPER2 DW ?, ? MOV OPER1, 0 ;字節(jié)指令 MOV OPER2, 0 ;字指令 OPER1 DB 1, 2 OPER2 DW 1234H, 5678H MOV AX, OPER1+1 MOV AL, OPER2 類型不匹配 MOV AX, WORD PTR OPER1+1 MOV AL, BYTE PTR OPER2,(AX)=3402H (AL)=34H,BYTE_ARRAY LABEL BYTE WOR

10、D_ARRAY DW 50 DUP (?) tos LABEL WORD,LABEL 偽操作: name LABEL type,BYTE_ARRAY WORD_ARRAY ,tos ,50字,0064H, 表達(dá)式賦值偽操作:,表達(dá)式名 EQU 表達(dá)式 ALPHA EQU 9 BETA EQU ALPHA+18 BB EQU BP+8 “ = ” 偽操作 (允許重復(fù)定義) EMP = 7 EMP = EMP+1 , 地址計數(shù)器與對準(zhǔn)偽操作:,地址計數(shù)器 $ :保存當(dāng)前正在匯編的指令的地址 ORG $+8 ; 跳過8個字節(jié)的存儲區(qū) JNE $+6 ; 轉(zhuǎn)向地址是 JNE 的首址 +6 JMP $+

11、2 ;轉(zhuǎn)向下一條指令 $ 用在偽操作的參數(shù)字段: 表示地址計數(shù)器的當(dāng)前值,ARRAY DW 1, 2 , $+4 , 3 , 4 , $+4,ARRAY ,007E,0078,0074,ORG 偽操作: SEG1 SEGMENT ORG 10 VAR1 DW 1234H ORG 20 VAR2 DW 5678H ORG $+8 VAR3 DW 1357H SEG1 ENDS BUFFER LABEL BYTE ORG $+8 BUFFER DB 8 DUP (?),ORG 100H START: ,B DW 2 DUP (?) ALIGN boundary;保證雙字從4的倍數(shù)開始 ALIGN

12、4 ALIGN 2 ; EVEN,EVEN ;使下一地址從偶地址開始 A DB morning,EVEN, 基數(shù)控制偽操作:,. RADIX 表達(dá)式 ; 規(guī)定無標(biāo)記數(shù)的基數(shù),MOV BX, 0FFH MOV BX, 178 .RADIX 16 MOV BX, 0FF MOV BX, 178D,3. 匯編語言程序格式,標(biāo)號 指令 寄存器 說明程序或語句 變量 偽指令 標(biāo)號 的功能 宏指令 變量 常數(shù) 表達(dá)式,源程序的每條語句可表示為: 名字 操作 操作數(shù) ; 注釋,標(biāo)號/變量:段值、偏移量、類型三種屬性 表達(dá)式:數(shù)字表達(dá)式 地址表達(dá)式,ARRAY DW 1,2,3,4,5,6,7 ARYEND

13、DW ? MOV CX, (ARYEND-ARRAY)/2,ADD AX, BLOCK+2 ; 符號地址常數(shù) 有意義 ; 時意義不明確 MOV AX, BX+1 ; ,MOV AX, BX+1 ; 寄存器間接尋址,; AND AX,1,IN AL, PORT_VAL ;61H OUT PORT_VAL AND 0FEH, AL ;60H,MOV AX, 0FFFFH SHL 2,; MOV AX,0FFFCH,(3) 關(guān)系操作符: EQ、NE、LT、LE、GT、GE,計算結(jié)果為邏輯值:真 0FFFFH 假 0000H,X: Y: ,若 128 (真) 匯編結(jié)果: MOV FID, -1 若 1

14、28 (假) 匯編結(jié)果: MOV FID, 0,MOV FID, (OFFSET Y - OFFSET X) LE 128,(4) 數(shù)值回送操作符: OFFSET、SEG、TYPE、 LENGTH、SIZE,SIZE 變量 功能:LENGTH * TYPE,OFFSET / SEG 變量 / 標(biāo)號 功能:回送變量或標(biāo)號的偏址 / 段址,TYPE 變量 / 標(biāo)號 / 常數(shù) DB DW DD DF DQ DT NEAR FAR 常數(shù) 1 2 4 6 8 10 -1 -2 0,LENGTH 變量 功能:回送由DUP定義的變量的單元數(shù),其它情況回送1,ARRAY DW 100 DUP (?) TABL

15、E DB ABCD ADD SI, TYPE ARRAY ; ADD SI, 2 ADD SI, TYPE TABLE ; ADD SI, 1 MOV CX, LENGTH ARRAY ; MOV CX, 100 MOV CX, LENGTH TABLE ; MOV CX, 1 MOV CX, SIZE ARRAY ; MOV CX, 200 MOV CX, SIZE TABLE ; MOV CX, 1,(5) 屬性操作符: PTR、段操作符、SHORT、 THIS、HIGH、LOW、HIGHWORD、LOWWORD,HIGH和LOW CONS EQU 1234H MOV AH, HIGH C

16、ONS MOV AL, LOW CONS,類型 PTR 表達(dá)式 MOV WORD PTR BX, 5 段操作符 MOV ES: BX, AL SHORT 標(biāo)號 JMP SHORT NEXT,THIS 類型 TA EQU THIS BYTE TD DW 1234H NEXT EQU THIS FAR MOV AX,2,4. 匯編語言程序的上機(jī)過程,.model tiny .code org 100h begin: jmp main ;* num1 dw 1199H num2 dw 1166H sum dw ? ;* main proc near mov ax, num1 add ax, num2 mov sum, ax mov ax, 4c00h int 21h main endp end

溫馨提示

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

評論

0/150

提交評論