1. 程式人生 > >組合語言之暫存器(記憶體訪問)

組合語言之暫存器(記憶體訪問)

其實那些資料段,程式碼段,都是人自己定義的,CPU可不會這麼想,它執行程式碼的時候,它只跟著CS:IP走,CS:IP指向哪裡,他就認為哪裡是程式碼,並執行它。所以如果想讓CPU執行我們放在記憶體中的程式碼,那麼,請讓CS:IP指向他即可。

8086CPU存放是按小端存放的規則來的,即字的高位位元組存放在記憶體的髙地址中,字的低位位元組存放在記憶體的低位地址中。

下面我們來看DS和[address]

DS通常存放的資料的段地址,而[idata]存放一般是偏移量


我們知道若只有偏移量是不會找到資料的,必須還有段地址,在讀取資料時,CPU預設會把DS裡面的內容當作段地址,所以想要讓CPU讀取我們給的資料,必須先設定好DS裡面的值,(DS裡面的值不可以直接傳送,所以我們用了一個暫存器間接傳送

),置於為什麼會這樣,額這是硬體設計。(段暫存器之間也不允許傳送資料)

mov 指令有以下幾種形式:


add和sub同mov差不多,都有兩個運算元,他們有以下幾種形式:


下面說一下資料段,其實就是DS裡面的值作為基地址,然後我們給的值作為偏移地址就好了。

比如我們要將32000H裡面的資料放到暫存器AX中

我們只要先修改基地址的值。(記住段暫存器不能直接賦值,只能通過中間暫存器咯!)

mov AX,3000H             (指令,暫存器書寫大小無所謂)

mov DS,AX                  (先將基地址設定為3000H)

mov AX,[2000H]           (偏移地址2000H,預設從ds裡面取基地址)

相關推薦

組合語言記憶體訪問

其實那些資料段,程式碼段,都是人自己定義的,CPU可不會這麼想,它執行程式碼的時候,它只跟著CS:IP走,CS:IP指向哪裡,他就認為哪裡是程式碼,並執行它。所以如果想讓CPU執行我們放在記憶體中的程

組合語言第三章記憶體訪問

3.1  在CPU中,用一個16位暫存器來儲存一個字,一個字兩個位元組,高8位存放高位位元組,低8位存放低位位元組,低位元組所在的記憶體單元稱為起始地址。 3.2 3.3 8086CPU中,通常用DS暫存器來存放要訪問資料的段地址(字或者位元組) 舉個例子: mov bx,1000H mov

組合語言第3章 記憶體訪問

*****本章學習***** 3.1 字資料在記憶體中的儲存 (1)字單元,即存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成 (2)高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組 ps:這個知識點讓我想起了暫存器當中的高8位位元組和低8位

第3章 記憶體訪問小結

記憶體中字的儲存 字單元,即存放一個字形資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。我們將起始地址為N的字單元簡稱為N地址字單元。   DS和[address] “[...]”表示一個記憶

第三章 記憶體訪問相關內容總結

      在本章中,我們從訪問記憶體的角度繼續學習了幾個暫存器。我們提出字單元的概念:字單元,即存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。高地址記憶體單元中存放字型資料的高位位元組,低地址記憶體單元中存放字型資料的低位位元組。CPU要讀寫一個記憶體

第三章記憶體訪問

記憶體中字的儲存 在cpu中,用16位來儲存一個字,高8位存放高位元組,低8位存放低位位元組。在記憶體中時,由於記憶體單元是位元組單元,剛一個字要用2個地址連續的記憶體單元來存放,字的低位位元組存在低地址單元。 字單元--存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成,高地址記憶體

【第三章】 記憶體訪問總結

3.1.記憶體中字的儲存 1.概念:CPU中,用16位暫存器來儲存一個字,即一個只要用兩個地址連續的記憶體單元來存放。 2.字單元:存放一個字型資料(16位)的記憶體單元,由兩個地址連續的記憶體單元組成。     通常情況下,我們將起始地址為N的字單元簡稱為N地址單元。 3.2.D

CUDA學習--記憶體處理2

1. 暫存器 GPU上一個SM可以看成一個多執行緒的CPU核。一般CPU擁有二、四、八個核。但一個GPU卻有N個SM核。但這裡需要注意的是,所有的工作都是有SM上的SP(流處理器)處理的。每個核上SP數目不同,因此每個核支援的執行緒數目也會有很大的不同。事實上

組合語言(詳細介紹)

 1、暫存器 32位暫存器有16個,分別是: 4個數據暫存器(EAX、EBX、ECX、EDX)。 2個變址和指標暫存器(ESI和EDI);2個指標暫存器(ESP和EBP)。 6個段暫存器(ES、CS、SS、DS、FS、GS)。 1個指令指標暫存器(EIP);1個標誌暫

計算機儲存結構分析記憶體,快取,硬碟

前言            一個計算機包含多種儲存器比如:暫存器、快取記憶體、記憶體、硬碟、光碟等,為啥有這麼多種儲存方式,對於不太瞭解的人,總是覺得雲裡霧裡的,搞不明白原因。        

記憶體記憶體儲器與外設

暫存器:指的是CPU核心裡的暫存器,如r0,r1等 記憶體:記憶體(Memory)也被稱為記憶體儲器,其作用是用於暫時存放CPU中的運算資料,以及與硬碟等外部儲存器交換的資料。如RAM,SDRAM,Flash等。 實體地址:作業系統會給每一個記憶體單元編上一個絕對的號,計算機

移位右移位Verilog HDL語言描述

目錄 背景 測試一 測試程式碼 模擬波形圖 測試二 測試程式碼 模擬圖 ISE綜合 測試三 測試程式碼 模擬波形圖 ISE綜合 背景 之所以單獨把這個簡單

Exyons4412音訊驅動----初始化讀寫流程

核心載入驅動: module_init(snd_soc_init);  載入完成之後進入:snd_soc_init() 初始化函式 static int __init snd_soc_init(void) { #ifdef CONFIG_DEBUG_FS snd_soc

STM32 備份域備份、備份SRAM詳解及資料丟失問題處理

某些STM32晶片提供了備份SRAM,例如STM32F系列晶片有4K的備份SRAM。然而在使用過程中發現備份區域資料丟失!下面從STM32系列晶片提供的整個備份域來看看啥情況。 電池備份域   首先,這部分在參考手冊的電源(PWR)章節有詳細的介紹。器件的工作電

C語言的本質29——C語言與彙編和定址方式

x86的通用暫存器有eax、ebx、ecx、edx、edi、esi。這些暫存器在大多數指令中是可以任意選用的,比如movl指令可以把一個立即數傳送到eax中,也可傳送到ebx中。但也有一些指令規定只能用其中某些暫存器做某種用途,例如除法指令idivl要求被除數在eax暫存器中

組合語言 標誌

標誌暫存器 CPU內部的暫存器中,有一種特殊的暫存器(對於不同的處理機,個數和結構都可能不同)具有三種作用: 1) 用來儲存相關指令的某些執行結果; 2) 用來為CPU執行相關指令提供行為依據; 3) 用來控制CPU的相關工作方式。 這種特殊的暫存器在8086C

【第二章】總結

一,通用暫存器(8086CPU的所有暫存器都是16位的,可以存放兩個位元組。) 1,種類:AX,BX,CX,DX       有課細分為兩個獨立的8位暫存器來用,如:AX可分為AH和AL; 二,字在暫存器中的儲存 1.位元組(byte):由8個bit組成,可以存在8位暫存

EAX關鍵跳,關鍵CALL

OD動態除錯過程中,暫存器視窗是需要時常關注的! EAX暫存器:累加器,在乘法和除法指令中被自動呼叫;在win32中,一般用在函式的返回值中。 CALL:過程呼叫指令  格式: CALL OPRD  功能: 過程呼叫指令(說明: 1. 其中OPRD為過程的目的地址. 2.

51微控制器特殊功能SFR介紹

1、21個暫存器介紹         51系列微控制器內部主要有四大功能模組,分別是I/O口模組、中斷模組、定時器模組和串列埠通訊模組(序列I/O口),如其結構和功能如下圖: 圖1 51單片機結構和功能圖  51微控制器掌握的好壞,其實就是能否正確操作這四個功能模

iOS安全攻防(十一)arm彙編簡介

2014-12-13 21:10 by 16位元組, ... 閱讀, ... 評論, 收藏, 編輯 iOS安全攻防必須掌握arm彙編,這裡先簡要介紹arm中暫存器。 這是第一篇帖子,簡要說下arm的各個暫存器的功能。 R0-R3:用於