記一波匯編考前突擊

匯編問題列表

(1)8086CPU是多少位的佑女?寄存器有哪些骑脱?名稱是什么痴柔?

  • 8086CPU是16位的

  • 寄存器

    8個(gè)16位通用寄存器:

    AX(Accumulator)累加寄存器裳涛,可以分為AH(High)和AL(Low)兩個(gè)8位寄存器诀拭。

    BX(Base)基地址寄存器迁筛,可以分為BH(High)和BL(Low)兩個(gè)8位寄存器。

    CX(Count)計(jì)數(shù)寄存器,可以分為CH(High)和CL(Low)兩個(gè)8位寄存器细卧。

    DX(Data)數(shù)據(jù)寄存器尉桩,可以分為DH(High)和DL(Low)兩個(gè)8位寄存器。

    SI(Source Index)源變址寄存器

    DI(Destination Index)目標(biāo)變址寄存器

    BP(Base Pointer)基地址指針寄存器

    SP(Stack Pointer)棧指針寄存器

    4個(gè)16位段寄存器:

    CS(Code Segment)代碼段寄存器

    DS(Data Segment)數(shù)據(jù)段寄存器

    SS(Stack Segment)棧段寄存器

    ES(Extra Segment)附加段寄存器

    1個(gè)16位指令指針寄存器:

    IP(Instruction Pointer)

    只能與CS一起使用贪庙,只有處理器能改變其內(nèi)容蜘犁。

    1個(gè)標(biāo)志位寄存器Flags:

    • 按位起作用

    • 詳情請見問題(14)

共計(jì)14個(gè)寄存器

(2)8086CPU的內(nèi)存分段機(jī)制是什么?內(nèi)存真的分段了嗎止邮?

  • 內(nèi)存分段機(jī)制

    段地址 * 16(或10H) + 偏移地址 = 物理地址

  • 內(nèi)存只是在邏輯上進(jìn)行了分段这橙,物理上沒有分段。

(3)總線分幾種导披?不同總線的根數(shù)代表什么屈扎?

  • 總線分為3種:地址總線,數(shù)據(jù)總線撩匕,控制總線鹰晨。

  • 根數(shù)意義

    總線 意義
    地址總線 地址空間(尋址能力)
    數(shù)據(jù)總線 一次傳輸數(shù)據(jù)的多少
    控制總線 信號(hào)的種類

(4)內(nèi)存地址空間是什么?特點(diǎn)是什么止毕?

  • 內(nèi)存地址空間是什么

    計(jì)算機(jī)對 ROM 和 RAM 等芯片提供的存儲(chǔ)空間以線性邏輯整合在一起的連續(xù)區(qū)域模蜡。

  • 內(nèi)存地址空間的特點(diǎn)是:

    邏輯上連續(xù),統(tǒng)一編址扁凛;

    物理上分散忍疾,芯片不同;

(5)地址加法器的作用是什么令漂?

地址是20位的膝昆,寄存器是16位的,地址加法器將短地址左移4位(乘10H或16D)再加上偏移地址形成20位物理地址叠必。

(6)8086CPU是如何執(zhí)行指令的荚孵?

指令放在內(nèi)存里,一條接著一條纬朝,CPU自己按順序取出并且執(zhí)行收叶。

(7)匯編語言是編譯性語言還是解釋性語言?匯編語言由哪幾種部分構(gòu)成共苛?

  • 匯編語言是編譯型語言
  • 匯編語言分為偽指令和代碼指令判没,每種指令由代碼段,數(shù)據(jù)段隅茎,堆棧段和附加段構(gòu)成澄峰。

(8)bochsdbg調(diào)試時(shí)用到的命令有哪些?都怎么使用辟犀?

以下僅整理常用命令俏竞,具有強(qiáng)烈主觀色彩。

類型 命令 功能 舉例
中斷 b 加入斷點(diǎn),后接物理地址 b 0x7c00
blist 顯示現(xiàn)有斷點(diǎn)
d 刪除斷點(diǎn)
執(zhí)行控制 c 繼續(xù)執(zhí)行(continue)
p或n 單步執(zhí)行(遇到 call 和 int 不進(jìn)入函數(shù)魂毁、中斷內(nèi))
s 單步執(zhí)行(遇到 call 和 int 進(jìn)入函數(shù)玻佩、中斷內(nèi)),后面可以加執(zhí)行條數(shù) s/s 100
查看寄存器 r 顯示寄存器狀態(tài)
sreg 顯示段寄存器狀態(tài)
info eflags 顯示標(biāo)志位寄存器席楚,如果字母為大寫表示該位置狀態(tài)1咬崔,否則為0
查看內(nèi)存 xp 顯示內(nèi)存內(nèi)容,后接想要顯示的多少烦秩,單位垮斯,以及物理地址。b為字節(jié)闻镶,h為字甚脉,w為雙字 xp /2b 0x7c00
print-stack 查看堆棧
u 反匯編,后接行數(shù)和物理地址 u /10 0x7c00
退出 q或quit或exit 停止調(diào)試并退出

(9)硬盤的CHS铆农、LBA是什么牺氨?兩者轉(zhuǎn)化的公式是什么?

//TODO

(10)80*25彩色字符模式如何使用墩剖?其編程的一般套路是什么猴凹?

  • 80*25彩色字符模式如何使用?

    在80*25彩色字符模式下岭皂,顯示器可以顯示25行郊霎,每行80個(gè)字符。

    一個(gè)字符要占兩個(gè)字節(jié)(一個(gè)字符的 ACSII 碼要占用一個(gè)爷绘,再加上顏色屬性用的一個(gè)字節(jié))书劝。

    顏色屬性的表示方法:

    所在位置 7 6 5 4 3 2 1 0
    含義 閃爍 背景R 背景G 背景B 高亮 前景R 前景G 前景B
  • 編程的一般套路

    • 控制要顯示的內(nèi)容所在屏幕上的位置

    • 控制要顯示的內(nèi)容的是否閃爍和高亮,并設(shè)置前景和背景顏色土至。

    • 一般將顏色屬性寫為16進(jìn)制或2進(jìn)制傳入顯存中想要賦予顏色屬性的字符后面的地址中

    • 待續(xù)......

(11)內(nèi)存的串拷貝(rep movsb/movsw)是如何實(shí)現(xiàn)的购对?

  • movesb

    以字節(jié)為單位批量傳輸數(shù)據(jù)串。

  • movesw

    以字為單位批量傳輸數(shù)據(jù)串陶因。

  • 如何實(shí)現(xiàn)的骡苞?

    執(zhí)行這條命令時(shí),原始數(shù)據(jù)串的短地址由 DS 決定楷扬,偏移地址由 SI 指定解幽,也就是 DS:SI。傳送的字節(jié)數(shù)或字?jǐn)?shù)由 CS 指定烘苹。另外還要指定是正向還是反向傳送躲株。

    正向傳送:由低地址端到高地址端進(jìn)行傳送。

    反向傳送:由高地址端到低地址端進(jìn)行傳送镣衡。

    正向傳送時(shí)徘溢,每次傳送一個(gè)字節(jié)吞琐,SI 和 DI 自增1。每次傳送一個(gè)字然爆,SI 和 DI 自增2。

    反向傳送時(shí)黍图,每次傳送一個(gè)字節(jié)曾雕,SI 和 DI 自減1。每次傳送一個(gè)字助被,SI 和 DI 自減2剖张。

    無論正反傳送,CX都會(huì)自減1揩环。

    控制正向還是反向傳送的方法是: 控制標(biāo)志位寄存器中的 DF 標(biāo)志位搔弄。

    可通過 cld 指令將 DF 標(biāo)志位置為0,此時(shí)正向傳送丰滑。

    可通過 std 指令將 DF 標(biāo)志位置為1顾犹,此時(shí)反向傳送。

    rep 表示 repeat褒墨,功能:

    • rep 后面的指令執(zhí)行一次
    • (cx) = (cx)-1
    • 如果(cx)不等于炫刷,重復(fù)執(zhí)行后面指令;否則郁妈,順序向下執(zhí)行浑玛,不再重復(fù)后面的指令。

    傳送方式需設(shè)置如下(按字節(jié)傳送):

    • cld / std
    • 設(shè)置源數(shù)據(jù)段ds噩咪,設(shè)置目標(biāo)數(shù)據(jù)段es
    • 設(shè)置源偏移si顾彰,設(shè)置目標(biāo)偏移di
    • 設(shè)置傳送的次數(shù)cx
    • rep movsb / movsw

    (12)無符號(hào)數(shù)和有符號(hào)數(shù)是如何規(guī)定的?

  • 無符號(hào)數(shù)指不區(qū)分正負(fù)胃碾,一律按照自然數(shù)處理的數(shù)字涨享。

  • 有符號(hào)數(shù)指區(qū)分正負(fù),且該數(shù)字為整數(shù)或者負(fù)數(shù)要用其最高位進(jìn)行判斷书在。若最高位是0則該數(shù)字為正數(shù)灰伟,若最高位為1則該數(shù)字為負(fù)數(shù)。

    如8位的字節(jié)運(yùn)算環(huán)境下儒旬,正數(shù)的范圍是00000000至01111111栏账。負(fù)數(shù)的范圍是10000000至11111111。

    Tips: 如果想要判斷16進(jìn)制栈源,需要先將十六進(jìn)制轉(zhuǎn)換為2進(jìn)制再進(jìn)行判斷挡爵。題目告知為有符號(hào)數(shù)的前提下,只需判斷最高位是0還是1即可甚垦。

(13)mul和div的實(shí)現(xiàn)過程是什么茶鹃?(共4種)

  • Mul(Multiply)乘法(被乘數(shù)*乘數(shù)=積)

8位乘法:

  • 被乘數(shù)放置于 AL 中
  • 乘數(shù) SRC 放置于8位通用寄存器或內(nèi)存涣雕。
  • 乘積結(jié)果為16位,放置于 AX 寄存器中闭翩。

mul bl ; mul byte ptr [bx]

16位乘法:

  • 被乘數(shù)放置于 AX 中
  • 乘數(shù) SRC 放置于16位通用寄存器或內(nèi)存挣郭。
  • 乘積結(jié)果為32位,低16位放置于 AX 寄存器中疗韵,高16位放置于 DX 寄存器兑障。

mul bx ; mul word ptr [bx]

  • Div(Divide)除法(被除數(shù) / 除數(shù) = 商 。蕉汪。流译。余數(shù))

16位除法:

  • 被除數(shù)放置于 AX 中
  • 除數(shù) SRC 放置于8位通用寄存器或內(nèi)存。
  • 商放置于 AL者疤,余數(shù)放置于 AH 中福澡。

div bl ; div byte ptr [bx]
32位除法:

  • 被除數(shù)高16位放置于 DX 寄存器,低16位放置于 AX 中
  • 除數(shù) SRC 放置于16位通用寄存器或內(nèi)存驹马。
  • 商放置于 AX革砸,余數(shù)放置于 DX 中。

div bx ; div word ptr [bx]

(14)標(biāo)志位zf窥翩、of业岁、cf、pf寇蚊、sf笔时、df、tf仗岸、if允耿、af的作用是什么?是否會(huì)判斷前5個(gè)的值扒怖?

標(biāo)志位 0含義 1含義 備注
ZF(Zero flag)零標(biāo)志位 運(yùn)算結(jié)果為1 運(yùn)算結(jié)果為0
OF(Overflow flag)溢出標(biāo)志位 計(jì)算結(jié)果沒有溢出 符號(hào)相同的相加符號(hào)變的不一樣就溢出 较锡,符號(hào)不同的相減與被減數(shù)符號(hào)不一樣就溢出 只對有符號(hào)數(shù)而言
CF(Carry flag)進(jìn)位借位標(biāo)志位 最高位沒有產(chǎn)生進(jìn)位借位 前面的計(jì)算中最高位產(chǎn)生進(jìn)位借位 移位操作中保存最高位或最低位溢出的數(shù)字
PF(Parity flag)奇偶標(biāo)志位 計(jì)算結(jié)果有奇數(shù)個(gè)1 計(jì)算結(jié)果有偶數(shù)個(gè)1 結(jié)果的低八位
SF(Sign flag)符號(hào)標(biāo)志位 計(jì)算結(jié)果為非負(fù) 計(jì)算結(jié)果為負(fù)
DF(Direction flag)方向標(biāo)志位 正向 反向 與rep,movesb等配合使用
AF(Auxiliary flag)輔助進(jìn)位借位標(biāo)志位 低四位沒有向高四位借位 低四位向高四位借位

IF, TF 不考盗痒,先不寫了蚂蕴。

(15)loop循環(huán)是如何實(shí)現(xiàn)的?

先讓 CX 自減1俯邓,再判斷 CX 是否為0骡楼,如果為0則跳轉(zhuǎn)至 loop 后面標(biāo)明的標(biāo)號(hào)。

(16)jcc語句如何使用稽鞭?

《x86匯編語言-從實(shí)模式到保護(hù)模式》第91頁表6-1鸟整,這玩意兒太多了懶得打。

(17)是否會(huì)使用loop或jcc實(shí)現(xiàn)一重或二重循環(huán)朦蕴?能否寫出程序框架篮条?

會(huì)弟头,能。(怠惰中......)

(18)db涉茧、dw赴恨、dd等作用是什么?times呢降瞳?

  • db

定義一個(gè)以字節(jié)為單位的變量嘱支。

  • dw

定義一個(gè)以字為單位的變量。

  • dd

定義一個(gè)以雙字為單位的變量挣饥。

  • times

重復(fù)n次后面的語句。

(19)and沛膳、or扔枫、xor、not的作用是什么锹安?怎么用短荐?

  • and

按位清零。

假如叹哭,想要將 000010101B 的位0清零忍宋,我們只需要給他 and 上 11111110B 就可以了。

  • or

按位置一

假如风罩,想要將 000010101B 的位7清零糠排,我們只需要給他 or 上10000000B 就可以了。

  • xor

如果某相同位置上的兩個(gè)數(shù)字同為1或0超升,則清零入宦,如果不一樣則置一。

  • not

按位取反室琢,是0變1乾闰,是1變0。

(20)棧如何使用盈滴?push和pop如何實(shí)現(xiàn)涯肩?空棧和滿棧怎么設(shè)置(即sp的值是多少)?

先一頓操作初始化棧段和棧頂。

  • 設(shè)置棧段寄存器。
mov ax,段地址
mov ss,ax
  • 設(shè)置棧頂?shù)钠频刂?/li>
mov sp,偏移地址 
  • push

    • (sp) = (sp) – 2
    • 放入一個(gè)字到SS:SP處
  • pop

    • 從SS:SP處取出一個(gè)字
    • (sp) = (sp) + 2

空棧設(shè)置 SP 為0

滿棧設(shè)置 SP 為1

(21)8086尋址方式有哪些鸥咖?能否舉出一句匯編語句的例子养篓?

  • 寄存器尋址

操作的數(shù)位于寄存器中,可以直接從寄存器里取得榔幸。

mov ax, cx
add bx, 0xf000
inc dx
  • 立即尋址

指令的操作數(shù)是一個(gè)立即數(shù)。

add bx, 0xf000
mov dx, label_a
  • 內(nèi)存尋址

    • 直接尋址

    操作數(shù)為一個(gè)偏移地址。

    mov ax, [0x5c0f]
    add word [0x0230], 0x5000
    xor byte [es:label_b], 0x05
    

    表示內(nèi)存地址需要用中括號(hào)括起來阵幸。

    • 基址尋址

    順序存放的地址花履。

    buffer dw 0x20, 0x100, 0x0f, 0x300, 0xff00
    inc word [buffer]
    inc word [buffer + 2]
    inc word [buffer + 4]
    
    mov [bx], dx
    add byte [bx], 0x55
    
    • 變址尋址

    類似于基址尋址,使用變址寄存器挚赊。

    mov [si], dx
    add ax, [di]
    xor word [si], 0x8000
    

    也可以帶偏移量诡壁。

    mov [si + 0x100], al
    and byte [di + lable_a], 0x80
    
    • 基址變址尋址

    允許在機(jī)制寄存器和變址寄存器的基礎(chǔ)上帶一個(gè)偏移量。

    mov [bx + si + 0x100], al
    and byte [bx + di + label_a], 0x80
    

(22)JMP語句分為幾種荠割?都是如何實(shí)現(xiàn)的妹卿?

//TODO

(23)如何實(shí)現(xiàn)子程序的調(diào)用?其過程是什么蔑鹦?

//TODO

(24)中斷類型碼夺克、中斷向量、中斷向量表嚎朽、中斷例程是什么铺纽?中斷發(fā)生時(shí)CPU執(zhí)行過程是什么?

//TODO

先罷工了S慈獭狡门!


參考文獻(xiàn)

標(biāo)志寄存器總結(jié)

黑色星辰的課件兒

《x86匯編語言-從實(shí)模式到保護(hù)模式》

翔哥

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锅很,隨后出現(xiàn)的幾起案子其馏,更是在濱河造成了極大的恐慌,老刑警劉巖爆安,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叛复,死亡現(xiàn)場離奇詭異,居然都是意外死亡鹏控,警方通過查閱死者的電腦和手機(jī)致扯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來当辐,“玉大人抖僵,你說我怎么就攤上這事≡稻荆” “怎么了耍群?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長找筝。 經(jīng)常有香客問我蹈垢,道長,這世上最難降的妖魔是什么袖裕? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任曹抬,我火速辦了婚禮,結(jié)果婚禮上急鳄,老公的妹妹穿的比我還像新娘谤民。我一直安慰自己堰酿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布张足。 她就那樣靜靜地躺著触创,像睡著了一般。 火紅的嫁衣襯著肌膚如雪为牍。 梳的紋絲不亂的頭發(fā)上哼绑,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音碉咆,去河邊找鬼抖韩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛疫铜,可吹牛的內(nèi)容都是我干的帽蝶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼块攒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了佃乘?” 一聲冷哼從身側(cè)響起囱井,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趣避,沒想到半個(gè)月后庞呕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡程帕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年住练,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愁拭。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡讲逛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岭埠,到底是詐尸還是另有隱情盏混,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布惜论,位于F島的核電站许赃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏馆类。R本人自食惡果不足惜混聊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乾巧。 院中可真熱鬧句喜,春花似錦预愤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拙绊,卻和暖如春向图,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背标沪。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工榄攀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人金句。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓檩赢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親违寞。 傳聞我的和親對象是個(gè)殘疾皇子贞瞒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 計(jì)算機(jī)通過執(zhí)行指令序列來使機(jī)器得以工作,所以對于每一系列的計(jì)算機(jī)都有指定的一組指令集供計(jì)算機(jī)使用趁曼,這組指令...
    未來科技工作室閱讀 7,994評論 1 10
  • 一军浆、數(shù)據(jù)傳送指令 1. 通用數(shù)據(jù)傳送指令 通用表示符號(hào)data:立即數(shù)DST:目的操作數(shù)SRC:源操作數(shù)reg:寄...
    莫扎倫閱讀 1,603評論 0 0
  • 段的綜述 對于數(shù)據(jù)段,將它的段地址放在DS中挡闰,用mov乒融、ADD、sub等訪問內(nèi) 存單元的指令時(shí)...
    古夜鵬紅閱讀 1,235評論 0 1
  • 1.AT&T匯編語法 前面寫過摄悯,boot.s程序使用的是as86匯編語法赞季,而進(jìn)入head.s需要啟動(dòng)linux的時(shí)...
    wit_yuan閱讀 1,643評論 0 0
  • 漸變的面目拼圖要我怎么拼叨橱? 我是疲乏了還是投降了典蜕? 不是不允許自己墜落, 我沒有滴水不進(jìn)的保護(hù)膜罗洗。 就是害怕變得面...
    悶熱當(dāng)乘涼閱讀 4,246評論 0 13