匯編語言輸出字符的方法 材料匯編目錄怎么弄?
答:資料匯編目錄的操作步驟如下。1.將光標(biāo)放在前言頁的最后一個(gè)字符后,單擊插入-分隔符-下一頁-確定。2.在下一個(gè)生成的頁面上制作目錄,點(diǎn)擊插入-引用-索引和目錄-目錄-顯示級(jí)別設(shè)置為1-確定。3.刪
答:資料匯編目錄的操作步驟如下。1.將光標(biāo)放在前言頁的最后一個(gè)字符后,單擊插入-分隔符-下一頁-確定。2.在下一個(gè)生成的頁面上制作目錄,點(diǎn)擊插入-引用-索引和目錄-目錄-顯示級(jí)別設(shè)置為1-確定。
3.刪除 "前言和生成的目錄中的行。4.更改頁碼(1)將光標(biāo)放在前言頁,點(diǎn)擊插入-頁碼-格式-將數(shù)字格式改為羅馬數(shù)字(ⅰ,ⅱ,ⅲ)-確定。(2)將光標(biāo)放在這一頁目錄中,點(diǎn)擊插入-頁碼-去掉首頁頁碼前的勾號(hào)-格式-將起始頁碼改為0-確定。(3)右鍵單擊目錄-更新字段-僅更新頁碼。
匯編語言中的標(biāo)簽受某些規(guī)則的約束:
1.不能是程序集中的關(guān)鍵字,如DB、DW、
首先,dos必須支持中文顯示。
匯編語言通過調(diào)用控制臺(tái)輸出程序?qū)⒁粋€(gè)字符輸出到顯示區(qū)。比如要顯示字符A,就需要將字符A的ASCII碼傳送給顯示程序(這個(gè)顯示程序是BIOS系統(tǒng)中的一個(gè)顯示子程序,是一個(gè)軟中斷調(diào)用)。
普通的中文編碼是指兩個(gè)特殊的ASCII碼顯示一個(gè)漢字。得到要顯示的漢字的兩個(gè)ASCII碼后,可以連續(xù)調(diào)用顯示程序,將這兩個(gè)ASCII碼依次提交給顯示程序。
1.注冊(cè)
共有16個(gè)32位寄存器,即:
4個(gè)數(shù)據(jù)寄存器(EAX、EBX、ECX、EDX)。
2個(gè)索引和指針寄存器(ESI和EDI);2個(gè)指針寄存器(ESP和EBP)。
6個(gè)段寄存器(ES、CS、SS、DS、FS、GS)。
1指令指針寄存器(EIP);1個(gè)標(biāo)志寄存器(EFlags)。
2.數(shù)據(jù)寄存器
數(shù)據(jù)寄存器主要用于存儲(chǔ)操作數(shù)和運(yùn)算結(jié)果等信息,從而節(jié)省了讀取操作數(shù)時(shí)占用總線和訪問存儲(chǔ)器所需的時(shí)間。
一個(gè)32位CPU有四個(gè)32位通用寄存器:EAX、EBX、ECX和EDX。對(duì)低16位數(shù)據(jù)的訪問不會(huì)影響高16位。
這些低16位寄存器分別命名為AX、BX、CX和DX,與之前CPU中的寄存器一致。
四個(gè)16位寄存器可以分成八個(gè)獨(dú)立的8位寄存器(ax: ah ~ al,bx: BH ~ bl,CX: ch ~ cl: dx: dh~dl).
每個(gè)寄存器都有自己的名稱,可以獨(dú)立訪問。程序員可以使用這個(gè) "可分離 "靈活處理字的數(shù)據(jù)寄存器特性/
字節(jié)的信息。
AX和al通常被稱為累加器,使用累加器的運(yùn)算可能需要較少的時(shí)間。累加器可用于乘法、除法、輸入/輸出和其他運(yùn)算。
它們經(jīng)常被使用。
BX被稱為基址寄存器,可以用作內(nèi)存指針。
CX被稱為計(jì)數(shù)寄存器,用于控制循環(huán)和字符串操作期間的周期數(shù)。在位操作中,移位多個(gè)位時(shí),使用cl。
指示偏移量的位數(shù)。
DX稱為數(shù)據(jù)寄存器,可用于參與默認(rèn)操作數(shù)的運(yùn)算,并在乘法和除運(yùn)算時(shí)存儲(chǔ)I/O的端口地址。
在16位CPU中,AX、BX、CX和DX can t用作基址和變址寄存器來存儲(chǔ)存儲(chǔ)單元的地址,但在32位CPU中。
它的32位寄存器EAX、EBX、ECX和EDX不僅能傳輸數(shù)據(jù)、暫存數(shù)據(jù)和保存算術(shù)和邏輯運(yùn)算結(jié)果,而且
作為指針寄存器,這些32位寄存器用途更廣。
3.變址寄存器
32位CPU有兩個(gè)32位通用寄存器ESI和EDI,其低16位對(duì)應(yīng)于前一個(gè)CPU中的SI和DI,以及低16位數(shù)據(jù)
訪問不會(huì)影響高16位數(shù)據(jù)。
ESI、EDI、SI、DI稱為變址寄存器,主要用來存儲(chǔ)一個(gè)段中存儲(chǔ)單元的偏移量,它們可以用來實(shí)現(xiàn)各種存儲(chǔ)器。
操作數(shù)的尋址為訪問不同地址形式的存儲(chǔ)單元提供了方便。
索引寄存器不能劃分為8位寄存器。作為通用寄存器,它還可以存儲(chǔ)算術(shù)邏輯運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。
它們可以作為通用的內(nèi)存指針,在字符串操作指令的執(zhí)行過程中對(duì)它們有特殊的要求,它們也有特殊的
功能。
4.指針式計(jì)量器
32位CPU有兩個(gè)32位通用寄存器EBP和ESP,其中低16位對(duì)應(yīng)于前一個(gè)CPU中的BP和SP,低16位。
根據(jù)訪問,不影響高16位數(shù)據(jù)。
EBP、ESP、BP、SP稱為指針寄存器,主要用來存儲(chǔ)堆棧中存儲(chǔ)單元的偏移量,它們可以用來實(shí)現(xiàn)各種存儲(chǔ)器。
操作數(shù)的尋址為訪問不同地址形式的存儲(chǔ)單元提供了方便。
指針寄存器不能劃分為8位寄存器。作為通用寄存器,它還可以存儲(chǔ)算術(shù)和邏輯運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。
它們主要用于訪問堆棧中的存儲(chǔ)單元,并規(guī)定:
BP是基址指針寄存器,可以直接訪問堆棧中的數(shù)據(jù)。
SP是棧指針寄存器,只能訪問棧頂。
5.分段寄存器
根據(jù)存儲(chǔ)器分段的管理模式來設(shè)置分段寄存器。存儲(chǔ)單元的物理地址由段寄存器的值和偏移量組成。
,以便將兩個(gè)位數(shù)較少的值合并成一個(gè)可訪問的值。求更大物理空間的內(nèi)存地址。
32位CPU有六個(gè)段寄存器,如下所示:
CS:代碼段寄存器ES:附加段寄存器
DS:數(shù)據(jù)段寄存器FS:附加段寄存器
SS:堆棧段寄存器GS:附件段寄存器
在一個(gè)16位CPU系統(tǒng)中,只有4個(gè)段寄存器,所以程序在任何時(shí)候最多可以直接訪問4個(gè)正在使用的段。
在32位微機(jī)系統(tǒng)中,它有6個(gè)段寄存器,所以在這種環(huán)境下開發(fā)的程序最多可以同時(shí)訪問6個(gè)段。
32位CPU有兩種不同的工作模式:實(shí)模式和保護(hù)模式。在每種模式中,段寄存器的作用是不同的,相關(guān)的規(guī)定
簡(jiǎn)要描述如下:
實(shí)模式:段寄存器CS、DS、ES和SS與前一CPU中相應(yīng)的段寄存器以及存儲(chǔ)單元的邏輯具有相同的含義
地址仍然是 "段地址:偏移地址 "。為了訪問某個(gè)內(nèi)存段中的數(shù)據(jù),必須使用段寄存器和存儲(chǔ)單元的偏移地址。
保護(hù)模式:在這種模式下,情況要復(fù)雜得多。裝入段寄存器的不再是段值,而是一個(gè)名為 "選擇器和。
6.指令指針寄存器
32位CPU將指令指針擴(kuò)展到32位,并將其記錄為EIP。EIP的低16位與先前CPU中的IP具有相同的功能。
指令指針EIP和IP是代碼段中存儲(chǔ)下一次要執(zhí)行的指令的偏移地址。在具有預(yù)取指令功能的系統(tǒng)中,指令將在下一次執(zhí)行。
指令行通常被預(yù)取到指令隊(duì)列中,除非有分支,所以在理解它們的功能時(shí)不考慮指令隊(duì)列的存在。
條件。
在實(shí)模式下,因?yàn)槊總€(gè)段的最大范圍是64KB,所以EIP的高16位必須全部為0。此時(shí),它相當(dāng)于只使用它的低16位。
位IP來反映程序中指令的執(zhí)行順序。
7.標(biāo)志寄存器
1.運(yùn)算結(jié)果標(biāo)志位。共6個(gè),包括:CF進(jìn)位標(biāo)志、PF奇偶標(biāo)志、AF輔助進(jìn)位標(biāo)志、ZF零標(biāo)志、
溢出標(biāo)志位的SF符號(hào)標(biāo)志位。
2.狀態(tài)控制標(biāo)志位。一共三個(gè),包括:TF跟蹤標(biāo)志,IF中斷許可標(biāo)志,DF方向標(biāo)志。
以上標(biāo)志位在第七章都有提及,這里不再贅述。現(xiàn)在,讓我們 讓我們來談?wù)?2位標(biāo)志寄存器中添加的四個(gè)標(biāo)志位。
1.輸入輸出特權(quán)標(biāo)志IOPL。
IOPL由兩個(gè)二進(jìn)制位表示,也稱為I/O特權(quán)級(jí)別字段,它指定執(zhí)行I/O指令所需的特權(quán)級(jí)別。如果當(dāng)前
的特權(quán)級(jí)別小于或等于IOPL的值,則可以執(zhí)行I/O指令,否則將出現(xiàn)保護(hù)異常。
2.嵌套任務(wù)標(biāo)志NT。
NT用于控制中斷返回指令I(lǐng)RET的執(zhí)行。具體規(guī)定如下:
(1)當(dāng)NT0時(shí),用保存在堆棧中的值恢復(fù)EFlags、CS和EIP,并執(zhí)行例行中斷返回操作。
(2)NT1時(shí),通過任務(wù)轉(zhuǎn)換實(shí)現(xiàn)中斷返回。
3.重啟標(biāo)志RF。
RF用于控制是否接受調(diào)試故障。規(guī)定:當(dāng)RF0時(shí),表示接受,否則拒絕。
4.虛擬8086模式徽標(biāo)。
如果VM1,則表示處理器工作在虛擬8086模式,否則,處理器工作在通用保護(hù)模式。
8、32位地址尋址模式
最后說說32位地址的尋址。前面我們研究了16位地址的尋址,在32位微機(jī)系統(tǒng)中有五種。
本文提供了一種更加靈活、方便、復(fù)雜的存儲(chǔ)器尋址方法,進(jìn)一步擴(kuò)大了存儲(chǔ)器地址的尋址范圍。
當(dāng)使用16位寄存器訪問存儲(chǔ)單元時(shí),只有基址寄存器(BX和BP)和變址寄存器(SI和DI)可以用作。
偏移地址的一部分,但用32位寄存器尋址時(shí),就沒有這種限制了。所有32位寄存器(EAX、EBX、ECX、
EDX、ESI、EDI、EBP和ESP)都可以是偏移地址的組成部分。
使用32位地址偏移尋址時(shí),偏移地址可分為三部分:
1.32位基址寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP)。
2.一個(gè)32位索引寄存器(EAX、EBX、ECX、EDX、ESI、EDI和EBP),可以乘以1、2、4和8。
3.一個(gè)8位至32位的偏移常數(shù)。
例如,指令:MOVEBX,[EAX EDX * 2 300]
Eax是基址寄存器,edx是索引寄存器,300H是偏移常數(shù)。
以上三個(gè)部分可以任意組合,可以省略其中的一兩個(gè)。
以下是一些32位地址尋址指令:
Mov ax,[123456]
Mov eax
Mov ebx,[ecx*2]
Mov [[EAX EDX * 8300]顯式段寄存器是GS。
Mov ax,[esp]默認(rèn)段寄存器是SS。