当前位置:网站首页>匯編語言(5)寄存器(內存訪問)

匯編語言(5)寄存器(內存訪問)

2022-06-25 17:23:00 Day-3

1 內存中字的存儲

CPU中,用16比特寄存器來存儲一個字。高八比特存放高比特字節,低八比特存放低比特字節。
字單元概念,即存放一個字型數據(16比特)的內存單元,由兩個地址連續的內存單元組成。高地址內存單元中存放字型數據的高比特字節,低地址內存單元中存放字型數據的低比特字節。

2 DS和[address]

mov bx,1000H
mov ds,bx
mov al,[0]

CPU自動取ds中的數據為內存單元的段地址。
CPU不支持直接將數據送入段寄存器的操作。

3 字的傳送

mov bx,1000H
mov ds,bx
mov ax,[0]	;1000:0處的字型數據送入ax
mov [0]cx		;cs中的16比特數據送到1000:0處

4 mov add sub指令

mov 段寄存器,寄存器
mov 寄存器,段寄存器
mov 內存單元,段寄存器.
mov 段寄存器,內存單元
請添加圖片描述

5 數據段

將123B0H~123B9的內存單元定義為數據段。現在要累加這個數據段中的前3個單元中的數據,代碼如下:

mov ax,123BH
mov ds,ax	;將123BH送入ds中,作為數據段的段地址
mov al,0	;用al存放累加結果
add al,[0]		;將數據段第一個單元(偏移地址為0)中的數值加到al中
add al,[1]		;將數據段第二個單元(偏移地址為1)中的數值加到al中
add al,[2]		;將數據段第三個單元(偏移地址為2)中的數值加到al中

數據和程序在計算機中都是以二進制的形式存放的,
在區別程序和數據時,關鍵是看段地址,如果段地址是ds
段,說明該內存存放的是數據,如果段地址是cs段,說明該內存
存放的是指令。

6 棧

可以將棧看做一個只有一個開口的盒子。
棧有兩個基本操作:入棧和出棧。
PUSH(入棧)POP(出棧)。
任何時刻SS:SP指向棧頂元素。
關於棧越界問題,CPU只考慮當前的棧在何處、當前執行的命令是哪一條。
當一個段中存放數據,那麼就是“數據段”,存放代碼,就是“代碼段”,存放棧,那麼就是“棧段”。

7 用機器指令和匯編指令編程

(1)關於D命令。
在這裏插入圖片描述
(2)在E、A、U命令中使用段寄存器。
在這些命令中,,也可以同D命令一樣,用段寄存器錶示內存單元的段地址。
(3)Debug的T命令在執行修改寄存器SS的指令時,下一條命令也緊接著被執行。

原网站

版权声明
本文为[Day-3]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/176/202206251706067825.html