【匯編語言】——第三章課后總結

第三章 的書本上主要有以下幾個內容:

1.內存中字的存儲

字單元:即存放一個字型數據(16位)的內存單元,由兩個地址連續的內存單元組成。

小端法:高地址內存單元中存放字型數據的高位字節,低地址內存單元中存放字型數據的地位字節。

任何兩個地址連續的內存單元,N號單元和N+1號單元,可以將他看成兩個內存單元,也可看成一個地址為N的字單元的高位字節單元和地位字節單元。

2.DS和[address]

8086有一個DS寄存器,通常用來存放要訪問的數據的段地址

比如讀取10000H單元的內容:

mov bx,1000H

mov ds,bx

mov al,[0]

[...]:代表一個內存單元,其中的數字代表內存單元的偏移地址?

mov al ,[0]所使用的段地址來自ds,但ds不能直接寫入數據(8086不支持將數據直接送入段寄存器的操作),所以借助其他的一般性寄存器。

8086CPU自動取ds中的數據為內存單元的段地址

?

3.字的傳送

我們用mov指令在寄存器和內存之間進行字節數據的傳送。因為8086CPU是16位結構,有16根數據線,所以,可以一次性傳送16位數據,也就是說可以一次性傳送一個字。

只要mov指令中給出16位的寄存器就可以進行16位的數據的傳送了。比如:

mov bx,1000h

mov ds,ax

mov ax,[0]

mov [0],cx

4. mov add sub 指令

匯編指令? ?(1)操作碼

? ? ? ? ? ? ? ? ? (2)操作數? ?(常數,寄存器操作數,內存單元操作數)

用mov指令訪問內存單元,可以在mov指令中只給出單元的偏移地址,此時,段地址默認在DS存儲器中。

mov? 寄存器,寄存器

mov? 寄存器,內存單元

mov? 內存單元,寄存器

mov? 段寄存器,寄存器

mov? 寄存器,段寄存器

mov 內存單元 段寄存器

mov 段寄存器,內存單元

?

add 寄存器,數據

add 寄存器 ,寄存器

add 寄存器,內存單元

add? 內存單元,寄存器

?

sub 寄存器,數據

sub 寄存器,寄存器

sub 寄存器,內存單元

sub 內存單元,寄存器

5.數據段

可以將一組長度為N(N<=64KB)、地址連續,起始地址為16的倍數的內存單元當作專門存儲數據的內存空間——定義數據段

用ds存放數據段的段地址,

訪問時可以用ds存放數據段的段地址,再根據需要,用相關指令訪問數據段中的具體單元

6.棧

后進先出(LIFO):最后進入這個空間的數據,最先出去

棧頂:最后入棧的字數據所對應的地址單元

棧底:固定的一端,棧區最高地址單元的前一個單元

操作:push(入棧),棧頂上移,棧頂-2?

? ? ? ? ? ?pop(出棧),棧頂下移,棧頂+2

7.CPU提供的棧機制

PUSH(入棧)POP(出棧)

在8086CPU中,有兩個寄存器,段寄存器SS和寄存器SP,棧頂的段地址存放在SS中,偏移地址存放在SP中。任意時刻,SS和SP指向棧頂元素,PUSH指令和POP指令執行時,CPU從SS和SP中得到棧頂的地址。

PUSH AX 的執行

(1)SP=SP-2,SS:SP指向當前棧頂前面的單元,以當前棧頂前面的單元作為新的棧頂

(2)將ax中內容送入SS:SP指向的的內存單元處,SS:SP此時指向新棧頂

? ? ?入棧時棧頂從高地址向低地址方向增長

POP ax的執行

(1)將SS:SP指向的內存單元處的數據送入ax中

(2)SP=SP+2,SS:SP指向當前棧頂下面的單元,以當前棧頂下面的單元為新的棧頂。

注意:

出棧后 SS:SP指向新的棧頂1000EH,POP操作前的棧頂元素。1000CH處的2266H依然存在,但是已經不在棧中,當再次執行PUSH等入棧指令后,他將被覆蓋。

8.棧頂超界問題

當棧空時,再使用pop出棧,當棧滿時,再使用push入棧

要根據可能用到的最大棧空間來安排棧的大小,防止入棧的數據與太多而導致的超界;執行出棧的時候繼續出棧二導致的超界。

9.push、pop指令

push、pop實質上就是一種內存傳送指令,可以在寄存器和內存之間傳送數據,與mov指令不同的是,push和pop指令訪問的內存單元的地址不是在指令中給出的,而是由ss:sp指出的。

執行push時:先改變sp,后向ss:sp處傳送。

執行pop時:先讀取ss:sp處的數據,后改變sp。

棧頂的最大變化范圍為0~FFFFH。

轉載于:https://www.cnblogs.com/hongyezhu/p/10009637.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250180.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250180.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250180.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何從 Android 手機免費恢復已刪除的通話記錄/歷史記錄?

有一個有合作意向的人給我打電話&#xff0c;但我沒有接聽。更糟糕的是&#xff0c;我錯誤地將其刪除&#xff0c;認為這是一個騷擾電話。那么有沒有辦法從 Android 手機恢復已刪除的通話記錄呢&#xff1f;” 塞繆爾問道。如何在 Android 上恢復已刪除的通話記錄&#xff1f;如…

springBoot 登錄攔截器

1、首選創建一個繼承HandlerInterceptor的攔截器 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; /*** 攔…

[pytorch、學習] - 3.11 模型選擇、欠擬合和過擬合

參考 3.11 模型選擇、欠擬合和過擬合 3.11.1 訓練誤差和泛化誤差 在解釋上述現象之前&#xff0c;我們需要區分訓練誤差&#xff08;training error&#xff09;和泛化誤差&#xff08;generalization error&#xff09;。通俗來講&#xff0c;前者指模型在訓練數據集上表現…

關于'java' 不是內部或外部命令,也不是可運行的程序 或批處理文件 和 錯誤: 找不到或無法加載主類 helloworld的問題...

一、前幾天電腦重裝了一次系統將java配置的環境變量都弄沒了&#xff0c;自己添加了兩個新的變量JAVA_HOME&#xff08;自己jdk的地址&#xff09;以及在path中添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然后因為這幾天都是用eclipse進行編程的&#xff0c;沒有出現問題&#…

spring-boot注解詳解(一)

spring-boot注解詳解(一) SpringBootApplication SpringBootApplication (默認屬性)Configuration EnableAutoConfiguration ComponentScan。 Configuration&#xff1a;提到Configuration就要提到他的搭檔Bean。使用這兩個注解就可以創建一個簡單的spring配置類&#xf…

前端基礎-jQuery的優點以及用法

一、jQuery介紹 jQuery是一個輕量級的、兼容多瀏覽器的JavaScript庫。jQuery使用戶能夠更方便地處理HTML Document、Events、實現動畫效果、方便地進行Ajax交互&#xff0c;能夠極大地簡化JavaScript編程。它的宗旨就是&#xff1a;“Write less, do more.“二、jQuery的優勢 一…

[pytorch、學習] - 3.12 權重衰減

參考 3.12 權重衰減 本節介紹應對過擬合的常用方法 3.12.1 方法 正則化通過為模型損失函數添加懲罰項使學出的模型參數更小,是應對過擬合的常用手段。 3.12.2 高維線性回歸實驗 import torch import torch.nn as nn import numpy as np import sys sys.path.append("…

Scapy之ARP詢問

引言 校園網中&#xff0c;有同學遭受永恒之藍攻擊&#xff0c;但是被殺毒軟件查下&#xff0c;并知道了攻擊者的ip也是校園網。所以我想看一下&#xff0c;這個ip是PC&#xff0c;還是路由器。 在ip視角&#xff0c;路由器和pc沒什么差別。 實現 首先是構造arp報文&#xff0c…

spring-boot注解詳解(二)

ResponseBody 作用&#xff1a; 該注解用于將Controller的方法返回的對象&#xff0c;通過適當的HttpMessageConverter轉換為指定格式后&#xff0c;寫入到Response對象的body數據區。使用時機&#xff1a; 返回的數據不是html標簽的頁面&#xff0c;而是其他某種格式的數據時…

轉:org.apache.maven.archiver.MavenArchiver.getManifest錯誤

eclipse導入新的maven項目時&#xff0c;pom.xml第一行報錯&#xff1a; org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) 解決辦法&#xff1a; 1、Help——>Install …

Codeforces Round #524 Div. 2 翻車記

A&#xff1a;簽到。room里有一個用for寫的&#xff0c;hack了一發1e8 1&#xff0c;結果用了大概600ms跑過去了。慘絕人寰。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorith…

[pytorch、學習] - 3.13 丟棄法

參考 3.13 丟棄法 過擬合問題的另一種解決辦法是丟棄法。當對隱藏層使用丟棄法時,隱藏單元有一定概率被丟棄。 3.12.1 方法 3.13.2 從零開始實現 import torch import torch.nn as nn import numpy as np import sys sys.path.append("..") import d2lzh_pytorc…

springboot---request 中Parameter,Attribute區別

HttpServletRequest類既有getAttribute()方法&#xff0c;也由getParameter()方法&#xff0c;這兩個方法有以下區別&#xff1a; &#xff08;1&#xff09;HttpServletRequest類有setAttribute()方法&#xff0c;而沒有setParameter()方法 &#xff08;2&#xff09;當兩個…

Python之令人心煩意亂的字符編碼與轉碼

ASC-II碼&#xff1a;英文1個字節&#xff08;8 byte&#xff09;&#xff0c;不支持中文&#xff1b; 高大上的中國&#xff0c;擴展出自己的gbk、gb2312、gb2318等字符編碼。 由于各個國家都有自己的編碼&#xff0c;于是就需要統一的編碼形式用于國際流傳&#xff0c;防止亂…

[pytorch、學習] - 4.1 模型構造

參考 4.1 模型構造 讓我們回顧以下多重感知機的簡潔實現中包含單隱藏層的多重感知機的實現方法。我們首先構造Sequential實例,然后依次添加兩個全連接層。其中第一層的輸出大小為256,即隱藏層單元個數是256;第二層的輸出大小為10,即輸出層單元個數是10. 4.1.1 繼承Module類來…

springboot---基本模塊詳解

概述 1.基于Spring框架的“約定優先于配置&#xff08;COC&#xff09;”理念以及最佳實踐之路。 2.針對日常企業應用研發各種場景的Spring-boot-starter自動配置依賴模塊&#xff0c;且“開箱即用”&#xff08;約定spring-boot-starter- 作為命名前綴&#xff0c;都位于org.…

第二課 運算符(day10)

第二課 運算符(day10) 一、運算符 結果是值 算數運算 a 10 * 10 賦值運算 a a 1 a1 結果是布爾值 比較運算 a 1 > 5 邏輯運算 a 1>6 or 11 成員運算 a "蚊" in "鄭建文" 二、基本數據類型 1、數值…

[pytorch、學習] - 4.2 模型參數的訪問、初始化和共享

參考 4.2 模型參數的訪問、初始化和共享 在3.3節(線性回歸的簡潔實現)中,我們通過init模塊來初始化模型的參數。我們也介紹了訪問模型參數的簡單方法。本節將深入講解如何訪問和初始化模型參數,以及如何在多個層之間共享同一份模型參數。 import torch from torch import nn…

spring-boot注解詳解(三)

1.SpringBoot/spring SpringBootApplication: 包含Configuration、EnableAutoConfiguration、ComponentScan通常用在主類上&#xff1b; Repository: 用于標注數據訪問組件&#xff0c;即DAO組件&#xff1b; Service: 用于標注業務層組件&#xff1b; RestController: 用于…

IEnumerableT和IQueryableT區分

哎&#xff0c;看了那么多&#xff0c;這個知識點還是得開一個文章 IQueryable和IEnumerable都是延時執行(Deferred Execution)的&#xff0c;而IList是即時執行(Eager Execution) IQueryable和IEnumerable在每次執行時都必須連接數據庫讀取&#xff0c;而IList讀取一次后&…