二進位制如何進行加減乘除運算的
二進位制與十進位制的轉換
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 以彙編指令的格式在記憶體中寫入一條機器指令 簡單的例項...