6 組合語言的一些些

2021-07-27 12:02:50 字數 2697 閱讀 2665

二進位制如何進行加減乘除運算的

二進位制與十進位制的轉換

xchg指令不允許的情況有以下四種

1. 不能同時都為記憶體運算元(儲存器)

2. 任何乙個運算元都不能為段暫存器

3. 任何乙個運算元不能為立即數

4. 兩個運算元的長度必須相等

指令格式:xchg oprd1,oprd2

目的 源

功能:將乙個位元組或乙個字的源運算元和目的運算元相交換。

交換指令可以在暫存器之間,暫存器與儲存器之間進行,具體形式如下:

xchg reg,reg 例如: xchg al,cl

xchg reg,mem 例如: xchg ax,buf1

xchg mem,reg 例如: xchg count[si],bx

偽指令語句告訴匯程式設計序如何進行彙編,但它沒有對應的機器碼

1. 段定義語句——用來定義乙個邏輯段

***x(段名) segment [定位型別] [組合型別] [分類名]

***x ends

段名: 使用者指定,確定了該邏輯段在儲存器中的段基址,即高16位實體地址

對於堆疊段,組合型別stack不可省略

2. 段分配語句——assume

告訴匯程式設計序,4個段暫存器分別與哪些段有關。8086cpu系統中,儲存器採用分段結構,每段容量<=64kb,使用者可以設定多個邏輯段,但最多隻允許4個邏輯段同時有效。

assume cs: code ds: data ss: sstack es: 附加段名

各段的段名必須是用segment 和ends 定義過的段名。

assume 雖然能給各個段分配相應的段暫存器,但不能將段基址裝入相應的暫存器,因此要給ds es ss暫存器賦初值。同時,不允許使用者對cs進行初始化,而是在程式裝入後由作業系統對cs:ip賦初值。而對堆疊,除了ss暫存器外,還要給sp賦初值,設定了ss:ip也就設定了堆疊。

data segment    ;資料段

x db ?

y db ?

data ends

extra segment ;附加段,用於字串操作時,存放目的串

alpha db ?

beta dw ?

extra ends

stack segment part stack

'stack' ;堆疊段 100個位元組大小 top是sp的值

stapn db 100 dup(?)

top equ length stapn ;top的值是stapn的大小,100.

stack ends

code segment

main proc far

assume cs:code, ds:data

es:extra,ss:stack

start: mov ax,stack ;stack中存的是16位立即數,偏移位址

mov ss,ax ;立即數和段暫存器之間無法直接交換資料

mov sp,top ;堆疊指標,top的內容是100,stapn的大小

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

mov ax,extra

mov es,ax

retmain endp

code ends

end main

設定堆疊的第二種方法:

stack segment stack

dw 50 dup(?) ;50個字(100個位元組)的儲存單元,偏移位址00~99

toplabel word ;top定義位字變數,偏移位址100

stack ends

code segment

start:mov ax,stack

mov ss,ax

mov sp,offset top ;

top的偏移位址100給堆疊指標sp

code ends

end start

3. 過程定義語句——proc ret endp

過程名 proc [near]/far     必須說明是近過程還是遠過程 near——段內呼叫(可省) far——段間呼叫

…… ret    ret n 可以返回乙個數

endp

4. 變數定義語句——資料定義語句,位資料項分配儲存單元,即用乙個符號與該儲存單元聯絡

變數名 db/dw/dd/dq/dt 運算元

dup(?)複製操作符 用來定義重複變數——如開闢一大塊儲存單元,規定了大小和初值(?表示不確定)

5.其他偽指令

equ——等值

count equ 8

label——定義型別

top label word——將top定義為字變數

even——對準

將下一條語句指向的位址調整為偶位址(8086從奇位址訪問字單元時,訪問乙個字資料要進行兩次操作)

org——指定起始偏移位址

public extern——模組鏈結指令

Latex的一些些符號

偽 cup cap emptyset documentclass 11pt usepackage top 2cm,bottom 2cm,left 2cm,right 2cm usepackage usepackage usepackage usepackage floatname renewcomm...

Spring的註解 了解一些些註解流程3

擴充套件原理 1 beanfactorypostprocessor beanpostprocessor bean後置處理器,bean建立物件初始化前後進行攔截工作的 beanfactorypostprocessor beanfactory的後置處理器,在beanfactory標準初始化之後呼叫 所有...

組合語言 手記6

debug使用技巧 在windows系統下,可以在執行中鍵入cmd,然後輸入debug就可以進入了。r 檢視改變cpu暫存器的內容 d 檢視記憶體中的內容 e 改寫記憶體中的內容 u 將記憶體中的機器指令翻譯成彙編指令 t 執行一條機器指令 a 以彙編指令的格式在記憶體中寫入一條機器指令 簡單的例項...