組合語言期末複習總結 完整版

2021-11-02 07:54:13 字數 3225 閱讀 9739

(5) mov al,300 兩運算元型別不匹配

(6) mov [sp],ax 目的運算元應為[ si ]

(7) mov ax,bx+di 源運算元應為 [bx+di]

(8) mov 20h,ah 立即數不能作目的運算元

〔習題2.8〕請分別用一條組合語言指令完成如下功能:

(1)把bx暫存器和dx暫存器的內容相加,結果存入dx暫存器。

(2)用暫存器bx和si的基址變址定址方式把儲存器的乙個位元組與al暫存器的內容相加,並把結果送到al中。

(3)用bx和位移量0b2h的暫存器相對定址方式把儲存器中的乙個字和cx暫存器的內容相加,並把結果送回儲存器中。

(4)用位移量為0520h的直接定址方式把儲存器中的乙個字與數3412h相加,並把結果送回該儲存單元中。

(5)把數0a0h與al暫存器的內容相加,並把結果送回al中。

(1)add dx,bx

(2)add al,byte ptr [bx+si]

(3)add [bx+0b2h],cx

(4)add word ptr [0520h],3412h

(5)add al,0a0h

〔習題2.10〕指出下列指令的錯誤:

(1) xchg [si],30h xchg的運算元不能是立即數

(2) pop cs 不應對cs直接賦值

(3) sub [si],[di] 兩個運算元不能都是儲存單元

(4) push ah 堆疊的運算元不能是位元組變數

(5) adc ax,ds adc的運算元不能是段暫存器

(6) add [si],80h 沒有確定是位元組還是字操作

(7) shl [si] ,1 沒有指定指向資料的大小

(8) ror dx, al al應該換成cl

〔習題2.22〕假設ax和si存放的是有符號數,dx和di存放的是無符號數,請用比較指令和條件轉移指令實現以下判斷:

(1)若dx > di,轉到above執行

cmp dx,di

ja above ;=jnbe above

(2)若ax > si,轉到greater執行

cmp ax,si

jg greater ;=jnle greater

(3)若cx = 0,轉到zero執行

cmp cx,0

jz zero ;= jcxz zero

〔習題2.25〕對下面要求,分別給出3種方法,每種方法只用一條指令。

(1)使cf=0 (2)使ax=0

(1)解答:

clc(清零)

and ax,ax(邏輯操作不會進製)

or ax,ax

(2)解答:

xor ax,ax

and ax,0

mov ax,0

〔習題3.7〕假設myword是乙個字變數,mybyte1和mybyte2是兩個位元組變數,指出下列語句中的錯誤原因。

(1) mov byte ptr [bx],1000 1000超出了乙個位元組範圍

(2) mov bx,offset myword[si] 暫存器的值只有程式執行時才能確定,而offset是彙編過程計算的偏移位址,故無法確定,改為lea bx,myword[si]

(3) cmp mybyte1,mybyte2 兩個都是儲存單元,指令不允許

(4) mov al,mybyte1+mybyte2 變數值只有執行時才確定,彙編過程不能計算

(5) sub al,myword位元組量al與字變數myword,型別不匹配

(6) jnz mywordjnz指令只有相對定址方式,不支援間接定址方式

〔〔習題3.10〕畫圖說明下列語句分配的儲存空間及初始化的資料值:

(1) byte_var db 』abc』,10,10h,』ef』,3 dup(-1,?,3 dup(4))

(2) word_var dw 10h,-5,』ef』,3 dup(?)

(1)從低位址開始,依次是(十六進製制表達):

41 42 43 0a 10 45 46 ff - 04 04 04 ff - 04 04 04 ff - 04 04 04

(2)從低位址開始,依次是(十六進製制表達):

10 00 fb ff 46 45

〔習題3.11〕請設定乙個資料段mydataseg,按照如下要求定義變數:

(1) my1b為字串變數:personal computer

(2) my2b為用十進位制數表示的位元組變數:20

(4) my4b為用二進位制數表示的位元組變數:20

(5) my5w為20個未賦值的字變數

(6) my6c為100的常量

(7) my7c表示字串:personal computer

mydataseg segment

my1b db 『personal computer』

my2b db 20

my3b db 14h ;20h

my4b db 00010100b

my5w dw 20 dup(?)

my6c equ 100 ;my6c = 100

my7c equ

mydataseg ends

第4章基本組合語言程式設計

〔習題4.6〕編制乙個程式,把變數bufx和bufy中較大者存入bufz;若兩者相等,則把其中之一存入bufz中。假設變數存放的是8位無符號數。

.model small

.stack 256

.data

bufx db ?

bufy db ?

bufz db ?

.code

.startup

mov al, bufx

mov bl, bufy

cmp al,bl

ja next

mov bufz, bl

jmp done

next: mov bufz, al

done: .exit 0

end1.顯示helloworld字串。

程式實現任意鍵後響鈴

3.設有乙個64位的資料,要求將它算術左移8位(從高位元組開始,從右向左左移8位)

4.計算1~100的和,將結果放入sum中

5.把乙個字串中所有的大小改小寫,該字串以』0』結尾。

6.編制乙個程式,把變數bufx和bufy中較大者存入bufz;若兩者相等。則將其中之一存入bufz。假設變數存放的是8位無符號數。

組合語言指令大全發布完整版

les 傳送目標指標,把指標內容裝入es.例 les di,string 把段位址 偏移位址存到es di.lfs 傳送目標指標,把指標內容裝入fs.例 lfs di,string 把段位址 偏移位址存到fs di.lgs 傳送目標指標,把指標內容裝入gs.例 lgs di,string 把段位址 ...

特種結構期末複習 完整版

1 緒論 1.特種結構是指除普通的工業與民用建築結構 交通土建工程 礦山 碼頭和水利水電工程結構研究物件以外的,在土木工程中有廣泛用途的 功能比較特殊的 且結構的作用以及結構的形式比較複雜的工程結構。2.特種結構的研究物件 擋土牆及護坡 深基坑支護結構 貯液池 水塔 筒倉和煙囪。3.學習方法 簡答 ...

組合語言總結

一 乙個完整的源程式的結構 乙個源程式一般由若干個段組成,每個分段可以是棧段 資料段和 段。乙個源程式可以有多個棧段 資料段和 段,從語法規則上來看,棧段是有明顯標誌的 段最好的型別為 code 的標記,並用cs作為段界暫存器,只有資料段不要求標誌。完整的源程式的結構一般形式如下 程式名稱 二 源程...