freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第4章16位和32位微處理器的指令系統(tǒng)及匯編語言編程-預(yù)覽頁

2024-11-13 08:09 上一頁面

下一頁面
 

【正文】 )左移 4位+EA 四、基址變址尋址 匯編格式: X[BR+IR]或 X[BR][IR]( BR為基址寄存器, IR為變址寄存器, X表示位移量,其值是用 8位或 16位二進(jìn)制補(bǔ)碼表示的有符號數(shù)) 說明:基址寄存器 BR、變址寄存器 IR的內(nèi)容和位移量 X三者之和是操作數(shù)在內(nèi)存的 EA。 立即尋址主要用來給寄存器或內(nèi)存單元賦初值 例 【 46】 MOV AX, 2是將立即數(shù) 2送到 AX中 六、直接尋址 匯編格式:含有變量的地址表達(dá)式或段寄存器 :[EA] 說明:在一條指令中直接給出某一內(nèi)存單元的 EA, 這個(gè) EA經(jīng)過匯編后放在這條指令的下一個(gè)字單元 。無條件轉(zhuǎn)移指令則不作任何判斷,無條件地轉(zhuǎn)移到指令中指明的目的地址處執(zhí)行。所有的串操作指令均以寄存器間接方式訪問源串或目的串中的各元素,并自動修改 SI和 DI的內(nèi)容。主要是為變量申請內(nèi)存空間、建立堆棧、告訴匯編程序從何處開始匯編以及到何處結(jié)束等。如假定學(xué)生成績處理程序中經(jīng)常使用某班的人數(shù)用等價(jià)偽指令定義為: N EQU 40。 一個(gè)程序模塊可以定義為若干段 ,段名可以各不相同 , 也可以重復(fù) , 匯編程序?qū)⒁粋€(gè)程序中的同名段處理成一個(gè)段 。 它的一般格式如下: DATA SEGMENT 常量或變量定義 DATA ENDS 偽指令 ④ 堆棧段為程序定義堆棧 , 堆棧的大小依賴于你所編寫的程序?qū)Χ褩5氖褂贸潭?。 在一個(gè)程序中 , 數(shù)據(jù)段 、 堆棧段和附加數(shù)據(jù)段都可以省略 , 代碼段不能省略 代碼段的一般格式如下: CODE SEGMENT ASSUME CS:CODE , DS:DATA ,SS:STACK, ES:EDATA 假定偽指令 START: ┇ 可執(zhí)行語句 MOV AH, 4CH INT 21H CODE ENDS END START 程序結(jié)束偽指令 五、置匯編地址計(jì)數(shù)器偽指令 ORG 匯編地址計(jì)數(shù)器用符號 “ $”表示 , 它用來記錄正在被匯編程序匯編的語句地址 , 也就是說其內(nèi)容標(biāo)出了匯編程序當(dāng)前的工作位置 。 匯編地址計(jì)數(shù)器符號 “ $”可出現(xiàn)在表達(dá)式中 偽指令 匯編地址計(jì)數(shù)器的值可以用偽指令 ORG進(jìn)行設(shè)置 。 ORG $+5 NUM DB 2 DATA ENDS 匯編語言中的常量、變量及標(biāo)號 一 、 常量 常量是指在程序執(zhí)行期間不變的量 。但對經(jīng)常使用的數(shù)值常量 , 可以事先為它定義一個(gè)名字 , 然后在語句中用名字來表示該常量 , 這種常量稱符號常量 。012339。 指變量所在段的首地址到變量所在的存儲單元之間的距離 , 用字節(jié)數(shù)表示 。 標(biāo)識符最大長度不能超過 31個(gè)字符 , 并且匯編語言對字母的大寫和小寫沒有統(tǒng)一要求 , 也就是說 , 匯編語言對標(biāo)識符中字母的大寫和小寫不作區(qū)分 , 如 ABC、 aBc、 Abc和 aBC都認(rèn)為是同一個(gè)標(biāo)識符 。 過程名實(shí)際上是過程入口地址的符號表示 , 即過程第一條機(jī)器指令語句的存放地址 標(biāo)號的用法有兩種: ① 在代碼段某一指令的前面 , 是當(dāng)前一條指令語句地址的符號表示 , 用來提供一個(gè)轉(zhuǎn)移地址 ,讓其他的指令向此指令轉(zhuǎn)移 , 一般的機(jī)器指令語句前不需要標(biāo)號 ② 用來表示過程入口地址 三、標(biāo)號 匯編語言中的運(yùn)算符號和表達(dá)式 數(shù)值表達(dá)式是利用算術(shù) 、 邏輯 、 移位或關(guān)系運(yùn)算符將常量連結(jié)在一起構(gòu)成的表達(dá)式 , 它的運(yùn)算結(jié)果是一個(gè)數(shù)值 ① 算術(shù)運(yùn)算符共有 +、 、 *、 /、 MOD 5個(gè) ,其中 *、 /、 MOD優(yōu)先級相同 , +、 優(yōu)先級相同 ,并且 *、 /、 MOD優(yōu)先級高于 +、 。 SHL表示將常量左移運(yùn)算符右邊常量規(guī)定的次數(shù) , SHR表示將常量右移運(yùn)算符右邊常量規(guī)定的次數(shù) , 所空的位補(bǔ) 0 ④ 關(guān)系運(yùn)算符有 EQ、 NE、 GT、 LT、 GE、LE共 6個(gè)運(yùn)算符 , 分別是等于 、 不等于 、 大于 、小于 、 大于或等于 、 小于或等于 。 下面分 4種情況說明: ① 對于單操作數(shù)指令 , 操作數(shù)的類型必須明確 ② 對于雙操作數(shù)指令 , 只要有一個(gè)操作數(shù)類型明確就可以了 ③ 如果兩個(gè)操作數(shù)類型都明確 , 則它們的類型必須一致 ④ 如果兩個(gè)操作數(shù)類型都不明確 , 就要用 PTR來指定類型了 跨段前綴 “ :”用于臨時(shí)給變量 、 標(biāo)號或地址表達(dá)式指定一個(gè)段屬性 , 且只能在所出現(xiàn)的語句中有效 , 它并不改變地址表達(dá)式的偏移地址和類型屬性 , 它的格式是: ① 段寄存器名:地址表達(dá)式 , ② 段名:地址表達(dá)式 MOV AX, [SI]等價(jià)于 MOV AX, DS:[SI], 默認(rèn)從數(shù)據(jù)段中取數(shù)據(jù) 。 該運(yùn)算符分離出其后變量或標(biāo)號的偏移地址 ③ 類型分離運(yùn)算符 TYPE 該運(yùn)算符取其后變量或標(biāo)號的類型 。 匯編語言中的常用的運(yùn)算符的優(yōu)先級見表 417。因此分支程序設(shè)計(jì)中一個(gè)至關(guān)重要的問題是根據(jù)各標(biāo)志的不同狀態(tài)選用合適的轉(zhuǎn)移指令 。 前者稱為段內(nèi)轉(zhuǎn)移 , 后者稱為段間轉(zhuǎn)移 。 循環(huán)程序設(shè)計(jì) REPEATUNTIL和 WHILE兩種模式的共同點(diǎn)是都有初始化部分 、 工作部分 、 調(diào)整部分和控制部分 。通常的循環(huán)結(jié)構(gòu)是調(diào)整和工作部分同步工作,工作部分和調(diào)整部分合在一起,統(tǒng)稱為循環(huán)體。 例【4 3 2 】程序 在本例中 , 用到了三個(gè)寄存器 , 這三個(gè)寄存器的功能分別是: AX:累加器 , 用來累加 BUF中負(fù)數(shù)的個(gè)數(shù) , 初值為 0 BX:地址寄存器 , 用來指示 BUF的地址 , 初值為 BUF的首地址 CX:計(jì)數(shù)器 , 用計(jì)數(shù)方式控制循環(huán)何時(shí)結(jié)束 , 初值為 BUF的長度 N 循環(huán)程序設(shè)計(jì) 如何控制循環(huán)是循環(huán)程序設(shè)計(jì)中的一個(gè)重要環(huán)節(jié) , 下面介紹最常見的兩種循環(huán)控制方法:計(jì)數(shù)控制和條件控制 一 、 計(jì)數(shù)控制 當(dāng)循環(huán)次數(shù)已知時(shí) , 通常使用計(jì)數(shù)控制 , 計(jì)數(shù)控制又有正計(jì)數(shù)和倒計(jì)數(shù)兩種形式 ① 倒計(jì)數(shù) 先將循環(huán)次數(shù) N送入循環(huán)計(jì)數(shù)器中 , 每循環(huán) 1次 , 計(jì)數(shù)器減 1, 直到循環(huán)計(jì)數(shù)器中的內(nèi)容為 0時(shí)結(jié)束循環(huán) 下面以例 【 432】 的代碼段為例說明這個(gè)問題 。因此,可以將 AX是否為 0作為條件控制循環(huán) 例【4 3 3 】程序 子程序設(shè)計(jì) 子程序設(shè)計(jì)是使程序模塊化的一種重要手段 。 如果主程序和子程序不在同一代碼段 , 則稱為段間調(diào)用 , 此時(shí)在PROC后可加 FAR說明此子程序是遠(yuǎn)過程 。 該指令用來廢除棧頂 N個(gè)無用的參數(shù) 。 一般情況下 , 在子程序的開始安排一些保存現(xiàn)場的指令 , 在子程序的返回指令之前再恢復(fù)現(xiàn)場 。 常用的參數(shù)傳遞方法有寄存器法 、 約定單元法和堆棧法三種 ,本節(jié)主要講解前兩種方法 1.寄存器法 寄存器法就是子程序的入口參數(shù)和出口參數(shù)都在約定的寄存器中。 這道題的核心是求兩個(gè)整數(shù)最大公約數(shù)的子程序 GCDP, 它用的是輾轉(zhuǎn)相減法 。 缺點(diǎn)是要占用一定數(shù)量的存儲單元 例 【 435】 用約定單元法重寫例 【 434】 , 求兩個(gè)整數(shù)最大公約數(shù)和最小公倍數(shù) 【 分析 】 數(shù)據(jù)段的變量 X、 Y、 GCD、 LCM是約定的存儲單元 , 這些存儲單元主 、 子程序都可使用 。 但由于計(jì)算機(jī)機(jī)種的不同 、 外設(shè)型號的差異 , 控制它們工作的程序也會有差異 。 BIOS的主要功能是驅(qū)動系統(tǒng)中所配置的常用外設(shè) , 如顯示器 、 鍵盤 、打印機(jī) 、 磁盤驅(qū)動器以及異步通信接口等 , 使程序員不必過多地關(guān)心這些設(shè)備具體的物理特性和邏輯結(jié)構(gòu)細(xì)節(jié) ( 如外設(shè)寄存器地址 、 命令及狀態(tài)格式等 ) , 從而能方便地控制各種輸入 /輸出操作 。 當(dāng)符號地址的屬性為字節(jié)時(shí) , 則該指令每次讀入一個(gè)字節(jié) , DI內(nèi)容加 1或減 1;當(dāng)符號地址的屬性為字時(shí) ,則該指令每次讀入一個(gè)字 , DI內(nèi)容加 2或減 2。 80286相對 8086增加的指令 80386的尋址方式和 80386相對80286增加的指令 80386微處理器增加了 8個(gè) 32位的通用寄存器 (EAX、 EBX、 ECX、 EDX、 ESI、 EDI、 EBP和ESP)和段寄存器 FS和 GS, 不僅兼容 80286的 16位尋址方式 , 還新增了 32位尋址方式 。 POPA/POPAD則彈出由 PUSHA/PUSHAD保存的通用寄存器值 , 出棧順序和上述的入棧順序相反 2.地址指針傳送指令 格式: LFS OPD,OPS 功能: OPS先后裝入OPD和段寄存器 FS中, OPD為 16位或 32位通用寄存器 格式: LGS OPD,OPS 功能: OPS先后裝入OPD和段寄存器 GS中, OPD為 16位或 32位通用寄存器 格式: LSS OPD,OPS 功能: OPS先后裝入OPD和段寄存器 SS中, OPD為 16位或 32位通用寄存器 80386的尋址方式和 80386相對 80286增加的指令 80386的尋址方式和 80386相對 80286增加的指令 3. 基本傳送指令 格式: MOV OPD,OPS 擴(kuò)展功能: OPD和 OPS可以是 32位操作數(shù) , 它要求 OPD和 OPS必須等長 , 否則必須用擴(kuò)展傳送指令 MOVZX和 MOVSX, 這 2條指令只存在于 80386 以 上 的 微 處 理 器 中 , 格 式 為 :MOVZX/MOVSX OPD,OPS。 功能和 MUL OPS基本相同 , 指令中的被乘數(shù)和乘數(shù)均認(rèn)為是帶符號數(shù) 格式 2: IMUL OPD,OPS ; (OPD)*(OPS)→OPD 格式 3: IMUL OPD,OPS,立即數(shù) ; (OPS)*立即數(shù)→ OPD 格式 4: IMUL OPD,立即數(shù) ; (OPD)*立即數(shù) → OPD 規(guī)律:如果操作數(shù)多于一個(gè) ,則后兩個(gè)數(shù)相乘 ,結(jié)果放在第一個(gè)操作數(shù)中 80386的尋址方式和 80386相對 80286增加的指令 7. 除法指令 無符號除法指令 格式: DIV OPS 被除數(shù) 、 OPS( 除數(shù) ) 和商的長度 、 位置見表 428 其中 , OPS和被除數(shù) (EDX:EAX)可為 64位通用寄存器或存儲器數(shù) 帶符號除法指令 格式: IDIV OPS 功能:和 DIV OPS基本相同 , 指令中的被除數(shù)和除數(shù)均認(rèn)為是帶符號數(shù) 80386的尋址方式和 80386相對 80286增加的指令 80386的尋址方式和 80386相對 80286增加的指令 8. 比較指令 格式: CMP OPD,OPS 擴(kuò)展功能: OPD和 OPS可為 32位通用寄存器或存儲器數(shù) , 不能同時(shí)為存儲器數(shù) ,OPS也可為32位立即數(shù) 9. 求補(bǔ)指令 格式: NEG OPD 擴(kuò)展功能:將 32位的 OPD求補(bǔ)后送回到 OPD中 80386的尋址方式和 80386相對 80286增加 的指令 10. 邏輯指令 格式: AND OPD,OPS ;邏輯與指令 OR OPD,OPS ;邏輯或指令 XOR OPD,OPS ;邏輯異或指令 NOT OPD,OPS ;邏輯非指令 TEST OPD,OPS;邏輯測試指令 擴(kuò)展功能: OPD和 OPS可為 32位通用寄存器或存儲器數(shù) , 不能同時(shí)為存儲器數(shù) , OPS也可為 32位立即數(shù) 80386的尋址方式和 80386相對 80286增加的指令 11. 移位指令 格式 SHL OPD,OPS ( 邏輯左移指令 ) SHR OPD,OPS ( 邏輯右移指令 ) SAL OPD,OPS ( 算術(shù)左移指令 ) SAR OPD,OPS ( 算術(shù)右移指令 ) ROL OPD,OPS ( 不帶進(jìn)位的循環(huán)左移指令 ) ROR OPD,OPS ( 不帶進(jìn)位的循環(huán)右移指令 ) 80386的尋址方式和 80386相對 80286增加的指令 RCL OPD,OPS ( 帶進(jìn)位的循環(huán)左移指令 ) RCR OP
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1