【汇编语言】清华大学学堂在线《汇编语言程序设计》课程学习笔记
0 前言
全是基于x86系列處理器
1 寄存器與存儲(chǔ)器的區(qū)別
2 匯編程序員眼中的系統(tǒng)結(jié)構(gòu)
指向下一條指令的地址
- 16位 CS:IP
- 32位 EIP
- 64位 RIP
- 在處理器內(nèi)部以名字方式訪(fǎng)問(wèn)的快速存儲(chǔ)單元
- 寄存器堆:一系列寄存器的集合
匯編程序員眼中,就是CPU,Memory還有他們直接的通路,還有他們的內(nèi)部信息,匯編程序員直接考慮CPU和Memory要去怎么做。
3 指令的執(zhí)行過(guò)程
執(zhí)行完指令之后,會(huì)有狀態(tài)的變化(Condition codes的變化),這些變化,會(huì)被后面的其他指令作為依據(jù)進(jìn)行相關(guān)判斷,從而執(zhí)行相關(guān)命令,例如C語(yǔ)言if else的本質(zhì),就是這么回事。
4 C語(yǔ)言與匯編語(yǔ)言
在AT&T格式中,通過(guò)后綴,表明操作的是哪種類(lèi)型的數(shù)據(jù)。
這種表示方式,不容易出錯(cuò),顯式地說(shuō)明了數(shù)據(jù)的寬度。
5 匯編語(yǔ)言實(shí)例:兩個(gè)整數(shù)相加
C語(yǔ)言代碼
#include <stdio.h> #include <Windows.h>int main() {int a = 1;int b = 3;int t = a + b;int c = 1 + 22;system("pause");return 0; }對(duì)應(yīng)的匯編代碼
右圖可知
尋址方式中的[bx - 11H] 減法沒(méi)有關(guān)系,如果減過(guò)頭(bx < 11H),那么就會(huì)重新輪回,這個(gè)要根據(jù)機(jī)器數(shù)的寬度決定。
x86指令集是變長(zhǎng)的,不同指令的字節(jié)數(shù)不一樣。
add指令,整數(shù)加法不區(qū)分有無(wú)符號(hào),本質(zhì)都是機(jī)器數(shù)相加,輸出什么取決于放在哪里,當(dāng)然,沒(méi)有這么做加法的,因?yàn)?strong>沒(méi)有實(shí)際意義。
給出一段代碼比較
unsigned short a = 40000; short b = 1; unsigned short c = a + b;
2.
思考:浮點(diǎn)數(shù)加法呢?
6 mov傳送指令
不能兩個(gè)都是內(nèi)存單元,是因?yàn)橛布缓脤?shí)現(xiàn)。
x86指令中,至多有一個(gè)操作數(shù)是內(nèi)存單元。
總結(jié)
以上是生活随笔為你收集整理的【汇编语言】清华大学学堂在线《汇编语言程序设计》课程学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 英雄联盟帮我抉择个英雄
- 下一篇: 【汇编语言】8086汇编的loop循环与