第八章(筆記)

2021-06-14 05:03:57 字數 2429 閱讀 9829

能在[····]中進行記憶體單元的定址的暫存器只有4個, 分別是bx , si , di , bp

其中bx , bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss

si , di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址

[·····]中進行記憶體單元定址彙總:

[si]   [di]   [bx]   [bp]   [常量] 

[si+常量]   [di+常量]   [bx+常量]   [bp+常量]

[bx+si]   [bx+di]   [bp+si]   [bp+di]

[bx+si+常量]   [bx+di+常量]   [bp+si+常量]   [bp+di+常量]

彙編還提供了更為貼切的書寫方式:如([bx].常量 、[bx].常量[si])

在需要直接使用記憶體單元進行操作時,必須知道操作的記憶體長度。因此彙編提供了x ptr 這操作符代替所要操作記憶體的長度,x可以是word或type

(例子:mov word ptr [bx] , '12')

這章提供了乙個除法指令 div:

除數有兩種,8位和16位

如果除數為8位,被除數則為16位,預設存放在ax中,得到的結果商存放在al,餘存放在ah。如果除數為16位,被除數則為32位,那高16位存放在dx,低16位存放在ax,得到的結果商存放在ax,餘存放在dx

這章提供了乙個偽指令 dd:

dd是用來定義dword型資料(dword 是 double word)

這章提供了乙個操作符 dup:

這操作符與資料定義偽指令配合使用,用於進行資料的重複。

(例如:db 3 dup (0) == db 0,0,0)

結合上幾章所學的知識總結練習:

將給出的資料進行**型排列,並求出人均工資

assume ds:data, cs:code, ss:table

data segment

db '1975','1976','1977','1978','1979','1980'

db '1981','1982','1983','1984','1985','1986'

db '1987','1988','1989','1990','1991','1992'

db '1993','1994','1995'

;年份dd 16,22,382,1356,2390,8000,16000,24486,50065,97479

dd 140417,197514,345980,590827,803530,1183000,1843000

dd 2759000,3753000,4649000,5937000

;收入dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793

dw 4037,5635,8226,11542,14430,15257,17800

;雇員數

data ends

table segment

db 21 dup ('year summ ne ?? ')

dw 0,0,0,0,0,0,0,0

table ends

code segment

start: mov ax, data

mov ds, ax

mov ax, table

mov ss, ax

mov sp, 160h

mov dx, 0

mov bp, 0

mov bx, 0

mov si, 0

mov di, 0

mov cx, 21

t: push cx

mov cx, 2

mov di, 0

d: mov ax, [bx]

mov [bp+di] , ax

mov ax , [54h+si]

mov [bp+di+5h] , ax

add bx, 2

add si, 2

add di, 2

loop d

mov di, dx

mov ax , [ 0a8h+di]

mov [bp+0ah] , ax

add dx, 2

push dx

push bx

mov di, 0

mov bx, ax

mov ax, [bp+di+5h]

add di, 2

mov dx,[bp+di+5h]

div bx

mov [bp+0dh] , ax

pop bx

pop dx

pop cx

add bp, 10h

loop t

mov ax,4c00h

int 21h

code ends

end start

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

c primer Plus第八章筆記

該書應從8章之後開始學習 現在開始第8章 p199 字元輸入輸出 緩衝區 是乙個存放內容的臨時儲存區域 為什麼要設定緩衝區 一 將若干個字元作為乙個塊進行傳輸比逐個傳送這些字元耗時少。二 如果輸入了乙個錯的字元,可以用鍵盤的更正功能進行修改。當按下回車鍵的時候就傳送輸入的字元。但是,互動性的程式需要...

彙編筆記 第八章

title 彙編筆記 第八章 date 2018 12 27 20 04 33 tags 組合語言中用三種概念來表達資料的位置 立即數 idata 暫存器 段位址 sa 和偏移位址 ea 定址方式 含義名稱 常用格式舉例 idata sa ds ea idata 直接定址 idata bx si d...