⑴ 如何察看匯編程序的2進制代碼
假設你是用debug命令
debug program.exe
-u 100
「100」是你要開始反匯編的地址,也可以不寫地址,那麼意思就是從當前地址開始反匯編。
顯示結果格式如下:
0B78:0001 1F POP DS
0B78:0002 BA0E00 MOV DX,000E
0B78:0005 B409 MOV AH,09
0B78:0007 CD21 INT 21
0B78:0009 B8014C MOV AX,4C01
第二列就是二進制代碼。第三、四列是指令
⑵ 求一個好用的匯編語言調試工具,可以方便的單步執行、查看寄存器和查看數據
Ollydbg
SoftICE
可以在下面地址下載:http://www.pediy.com/tools/Debuggers.htm
⑶ 匯編語言emu8086怎麼看自定義的變數的值
用emu8086編輯完程序,並且編譯通過之後,點擊運行按鈕,彈出emulator窗口和original source code窗口。
在emulator窗口下方,有一個vars窗口,點擊之後,會彈出variables窗口,顯示本程序所用的所有變數及其值,並且運行期間也可以對值進行編輯。程序運行過程中,變數值的變化也會體現在本窗口之中。
⑷ 在匯編中如何使用字模點陣數據在屏幕上打出漢字。最好可以在emu8086上運行、說詳細點~
顯示漢字的程序如下,可以在 PC 機上正常顯示。
emu8086,能否顯示,就不知道了。
;======================================================
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100H
START:
PUSH CS
POP DS
MOV AH, 0FH ;讀取當前顯示方式.
INT 10H
PUSH AX
MOV AX, 12H ;設置點陣顯示
INT 10H
MOV AX, 0A000H ;顯示緩存段地址
MOV ES, AX
CLD
LEA SI, DOT
MOV DI, (30 * 80 + 10) * 2
MOV CX, CNT / 2 ;=16
Q1:
; MOVSB ;SI加一, DI加一.
; MOVSB ;SI加一, DI加一.
MOVSW
ADD DI, 78 ;相當是加上80
LOOP Q1
MOV AH, 0 ;等待按鍵.
INT 16H
POP AX
MOV AH, 00H ;恢復原來的顯示方式.
INT 10H
MOV AH, 4CH
INT 21H
;****字模點陣**** 32位元組, 是一個16*16的漢字
;
DOT DB 00H, 3CH, 47H,0C0H, 32H, 48H, 11H, 50H, 8FH,0FEH, 61H, 50H, 22H, 48H, 0CH, 44H
DB 17H,0FEH, 24H, 44H,0E4H, 44H, 27H,0FCH, 24H, 44H, 24H, 44H, 27H,0FCH, 24H, 04H
;
DB 01H, 00H, 7FH,0FCH, 01H, 00H, 3FH,0F8H, 00H, 00H, 1FH,0F0H, 10H, 10H, 1FH,0F0H
DB 04H, 40H,0FFH,0FEH, 10H, 00H, 7EH,0F8H, 12H, 88H, 12H, 88H, 22H,0F8H, 4CH, 88H
;
DB 10H, 10H, 10H, 18H, 1CH, 14H, 23H,0FEH, 22H, 10H, 7EH, 10H, 92H, 10H, 13H,0D4H
DB 0FEH, 54H, 12H, 54H, 12H, 54H, 17H, 48H, 1AH, 98H, 12H, 2AH, 04H, 46H, 08H, 02H
CNT EQU $ - DOT ;=32
CODE ENDS
END START
;======================================================
⑸ 有沒有mac os使用的80x86匯編的虛擬機環境類似win裡面的emu8086
那你就不如裝個parralle,載入個win,然後運行emu8086,曲線救國啊
⑹ emu8086中的undeclared label問題
以前是#include<asm/errno.h>改為#include<errno.h>即可。
EMU8086是學習匯編的工具,Emu8086-MicroprocessorEmulator結合了一個先進的原始編輯器、組譯器、反組譯器、具除錯功能的軟體模擬工具(虛擬PC),還有一個循序漸進的指導工具。
在模擬器中一步一步的編譯程序碼並執行,視覺化的工作環境更容易使用,可以在程序執行當中檢視暫存器、旗標以及記憶體。模擬器會在虛擬 PC 中執行程序,這可以隔絕程序,避免去存取實際硬體,像硬碟、記憶體,而在虛擬機器上執行組合程序,這可以讓除錯變得更加容易。
(6)emu8086如何查看物理地址擴展閱讀:
注意事項:
注意MOV AX,[BX] [SI] 與MOV AX,[BX+SI] 同等,MOV BP,2 [BX+DI] 與MOVBP,[BX+DI+2] 同等。
連續執行以下指令,填寫指令執行結果,並上機驗證結果。
M代表存儲單元物理地址
[Reg]代表寄存器間接定址的存儲單元內容
FLAGL代表標志寄存器低位元組
SRC代表源操作數
DST代表目標操作數
MOD代表定址方式
⑺ emu8086的使用方法
1.在開始菜單選在它的圖標,或者直接運行Emu8086.EXE2.在FILE菜單中選擇SAMPLE
3.點擊Compile and Emulate按紐(或者按快捷鍵F5)
4.點擊Single Step按紐(或者按快捷鍵F8),可以查看代碼如何運行. 目前使用最多的是十進制.十進制系統有10個數字0,1,2,3,4,5,6,7,8,9 利用這些數字能表示任何數值,例如754這些數字是由每一位數字乘以「基數」的冪累加而成的(上一個例子中基數是10 因為十進制中有十個數字)。
位置對於每一個數字是很重要的。例如,你將上一個例子中的「7」放到結尾:547
數值就成為:
特別提醒:任何數字的0次冪都是1,0的0次冪也是1 計算機沒有人類聰明(至少現在是這樣),製造一個只有開關或者稱為 0,1 兩種狀態的電子機器很容易。計算機使用二進制系統,只有兩個數字 0, 1基地為2每一位二進制數稱作一位(BIT),4 BIT 組成一個半位元組(NIBBLE),8BIT組成一個位元組(BYTE),兩個位元組組成一個字(WORD),兩個字組成一個雙字(DOUBLE WORD)(很少使用):
習慣上在一串二進制後面加上「b」,這樣,我們可以知道101b是二進製表示十進制的5。
二進制10100101b表示十進制的165,計算方法如下: 十六進制系統使用16個數字0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F基底是 16. 十六進制非常緊湊,便於閱讀。將二進制轉換為十六進制很容易,半位元組(4bits) 對應一位十六進制如下表
Decimal (base 10) Binary (base 2) Hexadecimal (base 16)0 0000 0 1 0001 12 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F
習慣上我們在一個十六進制數的後面加上 H,以便和其他進制區別, 這樣我們就知道 5Fh是一個十六進制數表示十進制的 95。習慣上,我們也在以字母開頭(從A到F)的十六進制數前面 加上0例如: 0E120h. 十六進制 1234h 等於4660: 在換算中,將十進制數不斷除以目標進制的基底,每一次都要記錄下商和余數,直到商0。 余數用來表示結果。
下面是一個十進制39(基底是10)到十六進制(基底是16)的換算:
結果為27H
上例中所有的余數都小於10,不必使用字母。再舉一個更復雜的例子:十進制 43868 換算為十六進制:
結果是 0AB5Ch, 使用 上面提到的表 將大於9的數字替換成字母。 運用同樣的原理,我們可以換算為二進制(用2作除數),或者是先換算成十六進制,再用上面的表換算成二進制:
於是,得到二進制: 1010101101011100b 對於十六進制數0FFh無法確定它是正數還是負數,因為它可以表示十進制的255 或者 - 1。
8位可以表示256個狀態,於是,我們可以假定前128個表示正數(從0到127),接下來的128個數(從128到256)表示負數 。如果想表示- 5,我們從256中減去5,即 256 - 5 = 251。用這種復雜的方法表示一個負數有著數學依據的,數學上- 5 加上 5等於0。當我們將兩個8位的數字5 和251相加時,結果超過255,溢出處理為0!
128到256高位始終是1,這個可以作為數字元號的標記 對於字(16位),16位有65536個狀態,頭32768個狀態(從0到32767)用來表示正數,下面的32768個狀態(從32767到65535) 表示負數
Emu8086帶有數制轉換工具,也可以計算各種數值表達式。選擇菜單 Math 項:
Number Convertor (數制轉換)可以實現任意數制之間的轉換。在文本框中填寫源
數值,將自動轉換到任意的數制。 可以作 8 位 或者 16 位轉換。Expression Evaluator(表達式計算)可以用來計算不同數制的計算以及從一個進制到另一個進制的轉換。輸入表達式,按下回車,結果就會以你選定的進製表示。最長可以進行32位的計算。當在Signed打鉤選中時(除了八進制和雙字),最前面的一位將被認作是符號位。這樣以來,0FFFFFFFFh將被認為是十進制的-1。例如,你計算0FFFFh * 10h + 0FFFFh ( 8086 CPU所能訪問的最大內存地址)。如果你選中Signed 和 Word選項,結果是-17(因為表達式被認為是(-1) * 16 + (-1) )。如果想按照無符號數計算,請不要選擇Signed表達式為65535 * 16 + 65535計算結果將是1114095 同樣你可以使用Number Convertor將非十進制換算為有符號的十進制,然後根據十進制計算。支持如下運算:
~ not (inverts all bits).
* multiply.
/ divide.
% molus.
+ sum.
- subtract (and unary -).
<< shift left.
>> shift right.
& bitwise AND.
^ bitwise XOR.
| bitwise OR.
二進制必須有「b」作結尾,例如00011011b 十六進制必須有h作結尾,另外,當第一位是字母時,最前面必須加上0,例如:0ABCDh八進制必須有o作結尾,例如:77o
⑻ 微機原理
微機原理又名:微型計算機原理。是一門計算機專業的必修課程。一般到畢業的時候都會有清考,到時候一般學校還會組織補習班,只要清考通過,就可以拿到畢業證。
《微機原理》是一門專業基礎課程,它的主要內容包括微型計算機體系結構、8086微處理器和指令系統、匯編語言設計以及微型計算機各個組成部分介紹等內容。
要求考生對微機原理中的基本概念有較深入的了解,能夠系統地掌握微型計算機的結構、8086微處理器和指令系統、匯編語言程序設計方法、微機系統的介面電路設計及編程方法等,並具有綜合運用所學知識分析問題和解決問題的能力。
微機原理實驗工具:
1、微機原理與介面技術實驗箱。
2、Masm5.0匯編調試程序。
3、emu8086模擬軟體。
4、北斗一號微機原理虛擬實驗系統。
存儲結構:
1、半導體存儲器的種類。
2、讀寫存儲器(RAM)。
3、只讀存儲器(ROM)。
4、PC/XT的存儲結構。
操作時序:
1、匯流排操作的概念。
2、8086的匯流排。
3、8086的典型時序。
4、計數器和定時器電路Intel 8253。