㈠ 匯編語言中的存儲器是什麼
主要用來存放程序和數據,這里指的是內存儲器或主存儲器,分為:
隨機存儲器(RAM)
只讀存儲器(ROM)
存儲器由許多存儲單元組成,每個單元的位數可以是1位、4位、8位、16位等,其中8位為一個位元組(Byte)。
存儲器的容量是指存儲器所能存儲的二進制位數,通常用能存儲的位元組數來衡量,單位有KB、MB、GB等。
存儲器中每個存儲單元都有一個編號,稱為存儲地址,簡稱地址。微處理器就是按照存儲單元的地址來訪問內存的。
對存儲器的訪問操作有讀操作和寫操作,用於實現從存儲器中讀出信息和把信息寫入存儲器。
每當需訪問存儲器時:
(1)由微處理器給出地址;
(2)通過地址解碼器選擇相應的存儲單元;
(3)微處理器發出讀或寫控制信號,從而從指定地址的單元讀出數據或把數據寫入指定地址的存儲單元。
㈡ 匯編語言中 cs, ds,ss 的區別
一、寄存器位置不同:
1、CS:代碼段寄存器;
2、DS:數據段寄存器;
3、SS:堆棧段寄存器。
二、存放位置不同:
1、代碼段寄存器CS:存放當前正在運行的程序代碼所在段的段基值。
2、數據段寄存器DS:存放數據段的段基值。
3、堆棧段寄存器SS:存放堆棧段的段基值。
三、段地址不同:
1、cs代碼段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,不能隨意修改它。
2、ss堆棧度段地址問聯合sp定義一個答堆棧,一旦你確定了堆棧地址,ss也不能隨便改變了。
3、ds數據段地址定義一個數據段。
(2)匯編語言中存儲器的代碼是啥擴展閱讀:
匯編語言的特點是能被計算機直接識別和執行,使用它進行編程可以減少佔用空間、提高運行速度,並能直接對硬體實施控制。
在需要實時控制的時候,有著不可替代的重要地位,但匯編語言在編程和理解時要復雜、困難一些,尤其是在進行數據處理或是邏輯運算時更加凸顯出其劣勢。
高級語言是面向使用者的語言,能更准確地被程序員所理解,它的表達能力強,功能多,編程效率高,上手速度快,自動化程度高,因而更受歡迎。
在大部分軟體開發中,使用者都採用高級語言編程,以提高編程效率。但在要求存儲空間小,執行速度快,需直接對硬體進行控制的場合,則應用匯編語言編程,以達到優化程序速度的目的。
網路-匯編語言 (面向機器的程序設計語言)
㈢ 匯編語言寄存器存儲器問題
通用寄存器8個:AX BX CX DX SP BP DI SI
加方括弧就是存儲器,存儲器之間不能傳遞數據
REG寄存器
MEM儲存器
SREG狀態寄存器
立即數有寬度,但要看怎麼用:mov ax,12h就是16位的,mov al,12h就是8位的,但不能mov al,0012h
㈣ 存儲器在匯編語言中的表示是什麼啊
我告訴你:
mov cs, ax是錯誤的, 因為mov指令不能用於設置cs,ip的值.
修改cs,ip的內容要用jmp命令.
同時修改, jmp 段地址: 偏移地址, 如 jmp 2BE4H: 3 修改後CS=2BE4 IP =0003H
難道不看書嗎? 你學intel格式,我學習at&t格式。嘎嘎
㈤ 匯編語言的CS是什麼意思
匯編語言cs:是代碼段寄存器,ds是數據段寄存器。
段代碼CS:存放當前正在運行的程序代碼所在段的段基值,表示當前使用的指令代碼可以從該段寄存器指定的存儲器段中取得,相應的偏移值則由IP提供。
cs:[ip]一起決定了下一條指令的地址,在調用的時候,CALL指令將保存返回地址,調用結束時,RET指令將恢復返回地址。
如果是段內跳轉,則只需要修改IP,如果是遠跳轉,則需CS和IP同時修改和恢復。
CS 代碼段,或代碼選擇器。同IP寄存器(稍後介紹)一同指向當前正在執行的那個地址。處理器執行時從這個寄存器指向的段(實模式)或內存(保護模式)中獲取指令。除了跳轉或其他分支指令之外,無法修改這個寄存器的內容。
㈥ 匯編語言中 cs、ds、ss的區別是什麼
CS:代碼段寄存器;DS:數據段寄存器;SS:堆棧段寄存器;當一個程序要執行時,就要決定程序代碼、數據和堆棧各要用到內存的哪些位置,通過設定段寄存器 CS,DS,SS 來指向這些起始位置。通常是將DS固定,而根據需要修改CS。cs 代碼段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它ss 堆棧段地址 聯合sp定義一個堆棧,一旦你確定了堆棧地址,ss也不能隨便改變了ds 數據段地址,定義一個數據段如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
㈦ 匯編語言的幾個簡單指令,並附上中文解釋
常用匯編指令: MOV 指令為雙操作數指令,兩個操作數中必須有一個是寄存器. MOV DST , SRC // Byte / Word 執行操作: dst = src
1.目的數可以是通用寄存器, 存儲單元和段寄存器(但不允許用CS段寄存器). 2.立即數不能直接送段寄存器
3.不允許在兩個存儲單元直接傳送數據 4.不允許在兩個段寄存器間直接傳送信息
PUSH 入棧指令及POP出棧指令: 堆棧操作是以"後進先出"的方式進行數據操作.
PUSH SRC //Word
入棧的操作數除不允許用立即數外,可以為通用寄存器,段寄存器(全部)和存儲器. 入棧時高位位元組先入棧,低位位元組後入棧. POP DST //Word
出棧操作數除不允許用立即數和CS段寄存器外, 可以為通用寄存器,段寄存器和存儲
器. 執行POP SS指令後,堆棧區在存儲區的位置要改變.
執行POP SP 指令後,棧頂的位置要改變.
XCHG(eXCHanG)交換
指令: 將兩操作數值交換
.
XCHG OPR1, OPR2 //Byte/Word
執行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必須有一個操作數是在寄存器中 2.不能與段寄存器交換數據
3.存儲器與存儲器之間不能交換數據.
XLAT(TRANSLATE)換碼指令: 把一種代碼轉換為另一種代碼. XLAT (OPR 可選) //Byte 執行操作: AL=(BX+AL)
指令執行時只使用預先已存入BX中的表格首地址,執行後,AL中內容則是所要轉換的代碼.
LEA(Load Effective Address) 有效地址傳送寄存器指令
LEA REG , SRC //指令把源操作數SRC的有效地址送到指定的寄存器中. 執行操作: REG = EAsrc
注: SRC只能是各種定址方式的存儲器操作數,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等價於 LEA BX , OPER_ONE
MOV SP , [BX] //將BX間接定址的相繼的二個存儲單元的內容送入SP中 LEA SP , [BX] //將BX的內容作為存儲器有效地址送入SP中 LDS(Load DS with pointer)指針送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。
執行操作: REG=(SRC), DS=(SRC+2) //將SRC指出的前二個存儲單元的內容送入指令中指定的寄存器中,後二個存儲單元送入DS段寄存器中。
㈧ 請問匯編語言中的存儲器操作數是什麼
指令的操作數有四種:
1、立即數,即常數,直接在匯編指令中給出的二進制、十進制、8進制、16進制
或者ascii碼字元等
2、寄存器,操作數存放在寄存器中。
3、存儲器,操作數放在內存單元中,可以是位元組、字、雙字等等。
4、埠,操作數來自外設埠。通過in、out指令操作。
㈨ 匯編語言中,指令MOVC A,@A+PC 與指令MOVC A,@A+DPTR的區別是什麼 在什麼情況下使用MOVC A,@A+PC
MOVC A,@A+PC是讀取地址為A+PC的存儲單元裡面的內容。
MOVC A,@A+DPTR是讀取地址為A+DPTR存儲單元的內容。
PC和DPTR的內容不同時,就有區別,還有DPTR可以用指令直接改變其中的值。
這兩條都是查表指令,MOVC A,@A+PC,只能給累加器A賦值,所以只能查這條指令所在地址以後256位元組范圍內的代碼或常數。而MOVC A,@A+DPTR,可以給DPTR賦給任何一個16位的地址值,所以查表范圍可達整個程序存儲器64K位元組空間的代碼或常數。
語言組成
由於匯編指令系統龐大,因而需構建指令系統體系,其指令數量龐大,格式復雜,可記憶性差等。指令中最難的是指令所支持的定址方式,其實質就是指令中操作數如何獲取。對於處理器而言,就是如何找到他所需的數據。
但對於計算機底層的匯編語言而言,這種定址方式將涉及大量的計算存儲格式,與 復雜的存儲管理方式緊密相關,因而難以理解。最後,匯編指令還關繫到如何影響標志位,但處理器標志位非常復雜,因而對其機制掌握就比較困難。