《彙編語言(王爽)》第七、八章【總結】

第七章 更靈活的定位內存地址的方法

1、and和or指令:

and指令:可以將操作對象相應位設爲0,其他位不變;

or指令:可以將操作對象相應位設爲1,其他位不變;

2、ASCII碼:

3、以字符形式給出的數據:

'......'指明數據是以字符形式給出的,編譯器將它們轉化成對應的ASCII碼

大寫字母——>ASCII碼的第5位爲0;(小寫字母對應爲1)

4、[bx+idata]

mov ax,[200+bx]

mov ax,200[bx]

mov ax,[bx].200

可以利用[bx+idata]進行數組處理

5、SI和DI(源地址寄存器、目的地址寄存器)

SI、DI與bx功能相近,但是不能分成兩個8位寄存器;

[bx+si]、[bx+di]、[bx+si+idata]、[bx+di+idata]

mov ax,[bx][si]

mov ax,[bx+200+si]

mov ax,[200+bx+si]

mov ax,200[bx][si]

mov ax,[bx].200[si]

mov ax,[bx][si].200

6、不同的尋址方式

【實驗6:將datasg段中的每個單詞的前四個字母改成大寫字母】

assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display      '
db '2. brows        '
db '3. replace      '
db '4. modify       '
datasg ends
codesg segment
start:  mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx,4
s0: push cx //將外層循環的cx值壓棧
mov cx,4
mov si,0
s: mov al,[bx+3+si]
and al,11011111b
mov [bx+3+si],al
inc si
loop s
pop cx
add bx,16
loop s0
mov ax,4c00h
int 21h
codesg ends
end start

外層循環一次的結果,以及程序運行的最終結果如下



第八章 數據處理的兩個基本問題

reg寄存器;sreg段寄存器(ds\ss\cs\es)

1、bx、si、di、bp


[...]中使用bp寄存器,段地址默認在ss中

2、機器指令處理的數據所在位置:CPU內部、內存、端口

3、彙編語言中數據位置的表達:

立即數(idata)

寄存器

段地址(SA)和偏移地址(EA)

4、尋址方式:


5、指令處理的數據長度:

寄存器指明;X ptr指明(X可以爲word、byte)

6、div指令:

div reg

div 內存單元

除數爲8位:則被除數爲16位,默認在AX中;結果:AL存儲商,AH存儲餘數

除數爲16位:則被除數爲32位,默認在DX和AX中,DX存放高16位,AX存放低16位;結果:AX存儲商、DX存儲餘數

7、僞指令dd:定義雙字類型(dword)

8、dup:配合db\dw\dd等使用,進行數據的重複,db 3 dup(0)等價於db 0,0,0








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章