新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 匯編入門學習筆記 (二)—— 寄存器(內存訪問)、棧

        匯編入門學習筆記 (二)—— 寄存器(內存訪問)、棧

        作者: 時間:2016-11-09 來源:網絡 收藏
        瘋狂的暑假學習之 匯編入門學習筆記 (二)

        本文引用地址:http://www.104case.com/article/201611/317776.htm

        參考:《匯編語言》 王爽 第三章

        一、寄存器內存訪問

        1.DS和[address]

        DS 數據段寄存器,用來存放數據段地址

        [address] 用來表示數據段的偏移地址

        同樣跟CS一樣,不可以通過 mov ds, 1000 給ds賦值

        要通過通用寄存器ax等。

        例如:

        mov ax, 1000

        mov ds, ax

        mov al, [0]

        把1000:0的內容存進al

        mov bx, 1000

        mov ds, bx

        mov [0], al

        把al寫進1000:0中

        因為ax、bx、cx是16為的,內存單元是8為的,所以 mov ax, [0]會一次付給ax [1]跟[0]中的內容

        例如:

        如果內存情況為

        10000H 11

        10001H 22

        10002H 33

        10003H 44

        ........

        --------------------------------

        mov ax, 1000

        mov ds, ax

        mov ax [0]

        mov bx [2]

        mov cx [1]

        這上面運行后 ax=2211H 、bx=4433H、cx=3322H

        mov ax,1000

        mov ds, ax

        mov ax, 1234

        mov [0], ax

        這上面運行后內存內容變為

        10000H 34

        10001H 12

        .........

        2. CPU

        相關寄存器:

        ss: 記錄棧的段地址

        sp:記錄棧的段地址的偏移地址

        相關指令:

        push 入棧 如 push ax 表示將寄存器ax的內容寫入棧

        pop 出棧 如 pop ax 表示從棧頂取出數據送入ax

        初始時,sp指向棧低的下一個單元的地址,每次push,sp減2,pop,sp加2

        例如:

        將10000H~1000FH這段內存當做棧來用

        為了10000H~1000FH這段內存當做棧來用,要設置 ss=1000 sp=0010(棧底的下一個單元的地址)

        如果內存內容如下:

        ---------------------------

        10000H

        ..........

        1000CH

        1000DH

        1000EH

        1000FH

        10010H <------- sp

        ---------------------------

        mov ax,0123

        push ax

        后內存內容如下:

        ---------------------------

        10000H

        ..........

        1000CH

        1000DH

        1000EH

        1000FH 23 <------- sp

        10010H 01

        ---------------------------

        pop bx

        后bx=0123H內存內容如下:

        ---------------------------

        10000H

        ..........

        1000CH

        1000DH

        1000EH

        1000FH

        10010H <------- sp

        ---------------------------

        3.CPU 棧頂越界

        8086CPU 保證我們對棧的操作不會越界。也就說,8086 CPU 只知道棧頂在何處,不知道棧底和棧空間的大小。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 肥城市| 静宁县| 玛纳斯县| 新宁县| 天等县| 齐齐哈尔市| 高唐县| 黎城县| 南丰县| 隆德县| 五原县| 齐齐哈尔市| 合水县| 永宁县| 平遥县| 格尔木市| 彰化县| 香河县| 西乡县| 晴隆县| 称多县| 永川市| 嵊泗县| 本溪市| 仲巴县| 新密市| 西城区| 溆浦县| 镇江市| 射洪县| 金华市| 眉山市| 友谊县| 资中县| 客服| 武安市| 济阳县| 慈利县| 延川县| 灵武市| 邢台县|