汇编语言程序设计
匯編語言程序設計
- 匯編語言源程序
- 匯編語言源程序的結構
- 表達式
- 偽指令
- 格式
- 操作數
- 重復操作符
- 段定義偽指令
- 設定段寄存器偽指令
匯編語言源程序
匯編語言源程序的結構
一個完整的源程序通常由若干邏輯段組成,包括數據段、附加段、堆棧段和代碼段。它們分別映射到存儲器中的物理段上。每個邏輯段以segment語句開始,以ends結束,整個源程序用end語句結尾。
代碼段中存放源程序的所有指令碼、數據、變量等則放在數據段和附加段中。程序中可以定義堆棧段,也可以直接利用系統中的堆棧段。具體一個源程序中要定義多少個段應根據實際需求來定。
dseg segment ;定義數據段data1 dw 0f865h ;DW是定義2字節空間data2 dw 360ch dseg endseseg segment ;定義附加段sum dw 2 dup(?) ;定義存放結果 eseg endscseg segment ;定義代碼段assume cs:cseg,ds:dseg,es:eseg start:mov ax,dsegmov ds,ax ;初始化DSmov ax,esegmov es,ax ;初始化ESlea si,sum ;存放結果的偏移地址送SImov ax,data1 ;取被加數add ax,data2 ;兩數相加mov es:[si],ax ;和送附加段的sumhlt cseg endsend start表達式
表達式不是一個指令,本身不能執行,在程序匯編時,匯編程序將表達式進行相應的運算,得出一個確定的值。
+-*/:當運符作為一個數值表達式時,其匯編結果就是一個數值。
邏輯運算符:只用于數值表達式,用于對數值進行位運算并得到一個結果。
關系運算符:有六個,EQ(相等),NE(不相等),LT(小于),GT(大于),LE(小于等于),GE(大于等于)。
取值運算符和屬性運算符
偽指令
格式
[變量] 偽操作 操作數,[操作數...],常用數據定義偽指令有以下5種。
操作數
data db 11h,33h ;定義包含兩個元素的字節變量data num dw 100*5+88 ;定義一個字類型,其初值為表達式的值 str db 'hello!' ;定義一個字符串,首地址為str sum dq 0011223344556677h ;將4個字存入sum,它們在內存中的存放由低到高為77h,66h,55h,44h data2 dw ? ;為變量data2分配2個字節的空間,初值為任意值重復操作符
[變量名] 數據定義偽操作 n dup(初值,[初值...]),圓括號中為重復的內容,n為重復的次數,如果用n dup(?)作為數據定義偽操作的唯一操作數,則匯編程序僅保留n個元素大小的數據區。
data1 db 20 dup(?) ;為變量data1分配20個字節的空間,初值為任意值。 data2 db 20 dup(30h) ;為變量data2分配20個字節的空間,初值均為30h段定義偽指令
段名 segment [定位類型][組合類型]['類別'] ... 段名 ends定位類型
組合類型
設定段寄存器偽指令
assume偽指令用于向匯編程序說明所定義的邏輯段屬于何種類型的邏輯段。說明方法是將邏輯段的短命和對應的段寄存器聯系起來。一般格式為assume 段寄存器名:段名,[段寄存器:段名]。
; 程序功能:10ms延時的子程序 delay proc ;定義一個子過程 proc的作用是子程序定義偽指令push bx ;保護原有bx內容push cx ;保存原有cx內容mov bl,2 ;外循環次數 next: mov cx,4167 ;內循環次數(延時5ms) w10ms:loop w10ms ;cx不等于0時則循環dec bl ;修改外循環計數值jnz next ;BX不為0時則進行第二輪循環pop cx ;恢復cx值。pop bx ;恢復bx值。ret ;過程返回 delay endp總結
- 上一篇: 公司网络故障那些事(路由器变交换机)
- 下一篇: 事业单位考试题库计算机网络,2015年事