16位彙編學習筆記(二) 組合語言的語句

2021-10-23 00:00:38 字數 2549 閱讀 6180

課後練習題

指令語句:具有對應的機器碼

偽指令語句:無對應的機器碼

指示匯程式設計序如何彙編源程式,包括括號,變數,段的定義

巨集指令語句:巨集彙編中的巨集指令語句,暫不介紹

偽指令: 【名字】 偽指令定義符號 【引數【,引數】】 ;注釋

偽指令定義符規定了偽指令的功能。

引數的個數和型別由偽指令的不同而不同;

引數:常數(數值表示式),也可以是符號。

名字,有的偽指令可以預設。

巨集指令語句:此處暫不介紹

名字和標號的規定:最多由31個字母,數字及規定的特殊字元(?@_$)構成,不可以以數字開頭,不能用保留名,不區分大小寫,名字後面沒有冒號,標號後面有冒號(名字和標號應該有意義)

組合語言中,通過運算子,操作符及括號把常數和符號連線起來,得到表示式。

1,常數

一,十進位制常數,d結尾,不加字尾的數字預設為10進製

二,十六進製制,h結尾

三,二進位制數,b結尾

四,八進位制數,q結尾

五,字串常數:引號括起來的乙個或者多個字元;

例如: cmp al, 『a』

將a轉換為ascii值運算

使用偽指令改變預設進製,例:radix 16 ;將預設進製改為16進製制

建議:寫上常數字尾防止看錯

2,算術運算子

+,-, *, /, mod

3,關係運算子

eq:相等

ne:不等

lt:小於

gt:大於

le:小於等於

ge:大於等於

運算結果:成立為ffffh,不成立為0

4,邏輯運算子

and,or,xor,not,

shl(左移),

shr(右移)

5,操作符(數值表示式)

high:取高八位

low:取低八位

length:取dup值,無dup返回1

size:取變數長度

offset:返回變數或者標號的偏移位址

seg:返回變數或者標號的的段值

type:返回變數或者標號的型別:

變數:db為1, dw為2, dd為4, df為8

標號:near為-1, far為-2

表示式如果是常數,返回0

另外還有width,mask,此處暫不介紹

運算子優先順序

位址表示式表示儲存器運算元的位址。

儲存器位址加或減乙個數字量,結果仍是儲存器位址,相當於指標偏移。

筆者自己做的答案,不一定正確,標答請度娘搜尋

1、偽指令語句與指令語句的本質區別是什麼?偽指令的主要作用是什麼?

答:偽指令語句無對應的機器碼。指示匯程式設計序如何彙編源程式,包括括號,變數,段的定義

2、組合語言中的表示式與高階語言中的表示式有何相同點和不同點?

答:此處以c語言為對比,都具有算術表示式,且格式類似。不同點是組合語言具有位址表示式,能夠通過位址表示式直接訪問儲存器。

3、組合語言中數值表示式和位址表示式有何區別?

(1)23h and 45h or 67h

答:0110 0111

(2)1234h/16+10h

答:133(此題可以使用位運算的思想做,向右移4位,很快滴)

(3)not(65535 xor 1234h)

答:1234h

(4)1024 mod 7+3

答:5(5)low 1234 or high 5678h

答:1101 0110

(6)23 shl 4

答:30h

(7)「eb」 ge 4562h xor -1

答: ffffh

(8)1234h shr 6

答:0048h

(9)『a』 and (not (『a』-『a』))

答:0010 0001

(10)『h』 or 00100000b

答:0110 1000

(11)76543q lt 32768 xor 76543q

答:829ch

(12)3645h and 0ff00h

答:3600h

5、請計算如下程式片段中各位址表示式的值,設bx=1000h,si=2000h,di=3000h,bp=4000h:

(1)[bx+100h]

答:1100h

(2)[di][bp]

答:7000h

(3)2000h[si]

答:4000h

(4)10h[bx][si]

答:3010h

(5)[bp-128]

答:3f80h

(6)[bx][di-2]

答:3ffeh

16位彙編筆記

1 子函式中進行現場保護時,不能把返回值所存放的暫存器 絕對不可以 入棧,只是被訪問而沒有被修改的暫存器也不需要入棧。子函式的引數盡量入棧,因為如果後面的子函式再次使用這些引數時,需要確保引數沒有變動 2 開機cpu加電後,初始化cs 0ffffh,ip 0。ffffh 0處有一條跳轉指令,跳轉至b...

組合語言筆記

1 暫存器操作 cs暫存器不能用mov指令賦值,需要用jmp等調轉指令。但還可以將cs暫存器的值mov到暫存器或者記憶體 ds暫存器可以用mov賦值,通常是這樣操作 mov bx 位址 mov ds bx。可以將ds中的值mov到暫存器或者記憶體。2 實模式和保護模式 實模式 實模式下訪問記憶體是通...

組合語言筆記

原作者是哪位大佬已經不可考,寫的挺好的 一波,侵刪 8086有14個暫存器 控制暫存器 ip flag 段暫存器 8086中 中的 只能是bx bp si di。此時bp預設ss段,di預設es段,bx si預設ds。16位 flags 32位 eflags 標誌位控制標誌位 系統標誌位 影響標誌暫...