匯編語言程序設計
❶ 匯編語言程序設計
; 本程序在MASMPlus 1.2集成環境下通過編譯,經過調試,運行正確。
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
KBBack equ 0008H
; -------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -------------------------------------
; 功能:輸出回車換行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; -------------------------------------
; 功能:取游標位置
; 入口:無
; 出口:DH=行號,DL=列號
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
PUSH DX
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP DX
POP CX
POP BX
POP AX
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -------------------------------------
; 功能:置游標位置
; 入口:Cursor_Row=行坐標; Cursor_Col: 列坐標)
SetCursor Proc Near
PUSH DX
PUSH CX
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
POP DX
RET
SetCursor EndP
; -------------------------------------
; 功能:鍵盤輸入一個指定位數的十六進制數字,將其轉換成二進制數
; 由於限定最大數據類型為字,所以,十六進制數字位數最多4位,最大無符號數:0FFFFH
; 約定:直接回車,視為數字0
; 入口:@@Hexadec=數字位數
; 出口:轉換後的二進制數保存在AX寄存器中
Input_Hex Proc Near
push cx
push bx
mov cx,cs:@@Hexadec ;十六進制數位數
xor bx,bx ;十六進制數初值
@@Input_Hex: call GetCursor ;取游標位置
mov ah,1 ;從鍵盤接受一個字元
int 21h
cmp al,CR ;回車?已經鍵入的十六進制字元不足N位
jz @@Return_Hex
cmp al,KBBack ;回空鍵?
jz @@KB_Back ;是,重新輸入
cmp al,'0' ;低於數字'0'?
jb @@KBBack ;是,重新輸入
cmp al,'9';低於或等於數字'9'?
jbe @@Convert_Bin ;是,轉去轉換成二進制數
and al,0dfh ;對高於數字'9'的字元視為字母並轉換成大寫,以便判斷是否是A~F之間的字母
cmp al,'A' ;低於字母'A'?
jb @@KBBack ;是,重新輸入
cmp al,'F' ;高於字母'F'?
jbe @@Convert_Bin ;是,轉去轉換成二進制數
jmp @@KBBack ;高於字母'F',重新輸入
@@KB_Back: dec Cursor_Col
inc cx
@@KBBack: call SetCursor ;置游標位置
jmp @@Input_Hex
@@Convert_Bin: and al,0fh ;轉換成二進制數
push cx
mov cx,4
shl bx,cl ;前面的數左移4位,實現乘16
or bl,al ;加上剛輸入的數
pop cx
loop @@Input_Hex ;接受下一個數字
@@Return_Hex: mov ax,bx
pop bx
pop cx
ret
@@Hexadec dw ? ;數字位數
Input_Hex EndP
; -------------------------------------
Hex_Number dw 3 p(?) ;
Prompt_Hex db 'Please input 4 bits hexadecimal number: $'
Temp_Cursor dw ? ;保存游標位置
Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es
Output Prompt_Hex ;提示輸入4位十六進制數
lea di,Hex_Number ;十六進制數存放地址
mov cs:@@Hexadec,4 ;十六進制數位數
mov cx,3
cld
Input_Data: call GetCursor ;取游標位置
mov ax,WORD PTR Cursor_Row
mov Temp_Cursor,ax ;保存游標位置
call Input_Hex ;鍵盤輸入一個指定位數的十六進制數字,將其轉換成二進制數
stosw ;保存
cmp cx,1 ;最後一個數?
jz @@Continue ;是,跳過顯示逗號
mov ax,Temp_Cursor ;取游標位置
add ah,4 ;列號加4
mov WORD PTR Cursor_Row,ax
call SetCursor ;置游標位置
mov dl,','
call Output_Chr ;顯示一個字元
@@Continue: loop Input_Data ;下一個十六進制數
call Output_CTLF ;輸出一個回車、換行
mov ax,Hex_Number ;讀入第一個數
mov dl,'0' ;假設三個數都不相等
cmp ax,Hex_Number[2] ;等於第二個數?
jnz Next_One ;不等,轉去判斷是否等於第三個數
inc dl ;相等,增值
mov ax,Hex_Number[2] ;讀入第二個數
Next_One: cmp ax,Hex_Number[4] ;等於第三個數?
jnz $+4 ;不等,顯示字元
inc dl ;相等,增值
call Output_Chr ;顯示一個字元
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意鍵結束程序
mov ah,1
int 21h
mov ah,4ch ;結束程序
int 21h
Code ENDS
END Start ;編譯到此結束
❷ 匯編語言程序設計步驟 有那幾步
匯編語言程序設計步驟: 1、 分析問題,抽象出描述問題的數據模型 2、 確定問題的演算法思想 3、 畫出流程圖或結構圖 4、 分配存儲器和工作單元(寄存器) 5、 逐條編寫程序 6、 靜態檢查,上機調試 例:編程查找考生的最高分,假設所有考生分數已存入計算機內存。 1、 分析問題 根據條件、特點、規律 →數學模型 本例分數已給定為0~200之間的整數集合(考慮加試分) ,記為{S},找max{S}(註: 簡單問題不一定寫數學模型) 。 2、 確定演算法思想 最好利用現成演算法和程序設計方法,若無,則需根據實踐經驗總結演算法思想。如本例, 從成績單第一分數往下看,邊看邊比較,記住較高分,舍棄較低分,直至看完,最高分存於 腦中。歸納演算法思想:建立數據指針並指向數據區首地址。將第一數取入寄存器(如AL) , 與下一數比較,若下一數大則將其取入寄存器,否則調整指針,再與下一數比較,重復上述 過程,直至比較完畢,寄存器中即最高分。 讀分數用MOV指令,比較用CMP指令,分析判斷用條件轉移指令。 3、 畫流程圖或結構圖 有邏輯流程、演算法流程、程序流程等,復雜問題需畫模塊結構。本例簡單,只畫出程序 流程圖(用模塊化結構的N-S流程圖表示) : 本例的N-S流程圖 圖中初始化包括:設一個計數器,將分數個數減一後送計數器,每比較一次減一,至 零查找結束;建立一個指針指向數據區。 開始 初始化 取第一數到寄存器 與下一數比較 下一數大? 是 否 取大數到寄存器 修改指針,計數次數減一 返回到循環體開始,直到計數次數為0退出循環 結束 4、 分配存儲器空間和工作單元(寄存器) 定義數據段、堆棧段、代碼段等。工作單元一般用寄存器。本例:分數放數據段,建100 位元組堆棧空間,BX作數據指針,CX作計數器,AL放最高分。 5、 逐條編寫程序 DATA SEGMENT FEN DB 85,90,60,75,87,35,80,78,96,82…… ;存分數 MAX DB ? ;存最高分 DATA ENDS STACK SEGMENT PARA STACK 『STACK』 DB 100 DUP(?) ;100位元組堆棧 STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START PROC FAR PUSH DS MOV AX,0 PUSH AX ;為了返回DOS MOV AX,DATA MOV DS,AX ;置數據段寄存器 MOV BX,OFFSET FEN ;置數據指針 MOV CX,MAX-FEN ;置計數器初值 DEC CX ;N個分數比較N-1次 MOV AL,[BX] ;取第一個分數 LOP: INC BX ;調整指針 CMP AL,[BX] ;與下一數比較 JAE NEXT ;大於等於則轉 MOV AL,[BX] ;否則取下一數 NEXT: LOOP LOP ;計數器減一, ;不為零轉LOP MOV MAX,AL ;存放最高分 RET ;返回DOS START ENDP CODE ENDS END START 6、 靜態檢查,上機調試 選用指令盡量位元組少,使其執行速度快。易錯處應重點查,如比較次數、轉移條件等。 確信無錯後方可上機調試。
❸ 匯編語言程序設計的內容簡介
本書根據IEEE/ACM推出的CC2005和我國教育部高等學校計算機科學與技術教學指導委員會2006年發布的《高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)》編寫而成,內容涵蓋了知識領域CSAR3匯編級機器組織的知識點。
本書以Intel 80x86指令系統和匯編語言開發工具MASM 6.11與MASM 32為主體,在PC的MS-DOS和Windows環境中,較為系統地介紹了匯編語言程序設計所需要的指令、語法以及調試工具。第1~5章是80x86匯編語言的基本內容,包括匯編語言基礎知識、定址方式、主要匯編指令、偽指令、源程序格式、分支結構程序、循環結構程序、子程序和宏的程序設計技巧;第6~8章介紹了輸入/輸出程序的設計,包括輸入/輸出的基本概念,查詢方式的I/O程序設計,中斷處理程序設計,鍵盤、滑鼠和視頻的操作,磁碟文件存取的相關程序設計;第9~10章將內容擴展到32位匯編語言、多媒體指令和浮點編程等應用方面以及Windows窗口應用程序的開發。
本書適合作為高等院校計算機科學與技術及相關專業的教材,也可作為相關專業工程技術人員的參考書。
❹ 匯編語言程序設計的一般步驟是什麼
一、 上機實驗步驟註:以下步驟適用於除匯編語言程序設計的實驗一到實驗四外的所有實驗(實驗一到實驗四僅使用TD.EXE)。1.確定源程序的存放目錄建議源程序存放的目錄名為ASM(或MASM),並放在C盤或D盤的根目錄下。如果沒有創建過此目錄,請用如下方法創建:通過Windows的資源管理器找到C盤的根目錄,在C盤的根目錄窗口中點擊右鍵,在彈出的菜單中選擇「新建」→「文件夾」,並把新建的文件夾命名為ASM。請把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷貝到此目錄中。2.建立ASM源程序建立ASM源程序可以使用EDIT或NOTEPAD(記事本)文本編輯器。下面的例子說明了用EDIT文本編輯器來建立ASM源程序的步驟(假定要建立的源程序名為HELLO.ASM),用NOTEPAD(記事本)建立ASM源程序的步驟與此類似。在Windows中點擊桌面左下角的「開始」按鈕→選擇「運行」→在彈出的窗口中輸入「EDIT.COM C:\ASM\HELLO.ASM」,屏幕上出現EDIT的編輯窗口窗口標題行顯示了EDIT程序的完整路徑名。緊接著標題行下面的是菜單行,窗口最下面一行是提示行。菜單可以用Alt鍵激活,然後用方向鍵選擇菜單項,也可以直接用Alt-F打開File文件菜單,用Alt-E打開Edit編輯菜單,等等。如果鍵入EDIT命令時已帶上了源程序文件名(C:\ASM\HELLO.ASM),在編輯窗口上部就會顯示該文件名。如果在鍵入EDIT命令時未給出源程序文件名,則編輯窗口上會顯示「UNTITLED1」,表示文件還沒有名字,在這種情況下保存源程序文件時,EDIT會提示輸入要保存的源程序的文件名。編輯窗口用於輸入源程序。EDIT是一個全屏幕編輯程序,故可以使用方向鍵把游標定位到編輯窗口中的任何一個位置上。EDIT中的編輯鍵和功能鍵符合Windows的標准,這里不再贅述。源程序輸入完畢後,用Alt-F打開File菜單,用其中的Save功能將文件存檔。如果在鍵入EDIT命令時未給出源程序文件名,則這時會彈出一個「Save as」窗口,在這個窗口中輸入你想要保存的源程序的路徑和文件名(本例中為C:\ASM\HELLO.ASM)。 注意,匯編語言源程序文件的擴展名最好起名為.ASM,這樣能給後面的匯編和連接操作帶來很大的方便。3.用MASM.EXE匯編源程序產生OBJ目標文件源文件HELLO.ASM建立後,要使用匯編程序對源程序文件匯編,匯編後產生二進制的目標文件(.OBJ文件)。具體操作如下: 方法一:在Windows中操作用資源管理器打開源程序目錄C:\ASM,把HELLO.ASM拖到MASM.EXE程序圖標上。 方法二:在DOS命令提示符窗口中操作選擇「開始」→「程序」→「附件」→「命令提示符」,打開DOS命令提示符窗口,然後用CD命令轉到源程序目錄下,接著輸入MASM命令:I:>C:<回車> C:>CD \ASM<回車>C:\ASM>MASM HELLO.ASM<回車> 不管用以上二個方法中的哪個方法,進入MASM程序後,都會提示讓你輸入目標文件名(Object filename),並在方括弧中顯示默認的目標文件名,建議輸入目標文件的完整路徑名,如:C:\ASM\HELLO.OBJ〈回車〉。後面的兩個提示為可選項,直接按回車。注意,若打開MASM程序時未給出源程序名,則MASM程序會首先提示讓你輸入源程序文件名(Source filename),此時輸入源程序文件名HELLO.ASM並回車,然後進行的操作與上面完全相同。如果沒有錯誤,MASM就會在當前目錄下建立一個HELLO.OBJ文件(名字與源文件名相同,只是擴展名不同)。如果源文件有錯誤,MASM會指出錯誤的行號和錯誤的原因。4.用LINK.EXE產生EXE可執行文件在上一步驟中,匯編程序產生的是二進制目標文件(OBJ文件),並不是可執行文件,要想使我們編制的程序能夠運行,還必須用連接程序(LINK.EXE)把OBJ文件轉換為可執行的EXE文件。具體操作如下: 方法一:在Windows中操作用資源管理器打開源程序目錄C:\ASM,把HELLO.OBJ拖到LINK.EXE程序圖標上。 方法二:在DOS命令提示符窗口中操作選擇「開始」→「程序」→「附件」→「命令提示符」,打開DOS命令提示符窗口,然後用CD命令轉到源程序目錄下,接著輸入LINK命令:I:>C:<回車> C:>CD \ASM<回車>C:\ASM>LINK HELLO.OBJ<回車>不管用以上二個方法中的哪個方法,進入LINK程序後,都會提示讓你輸入可執行文件名(Run file),並在方括弧中顯示默認的可執行文件名,建議輸入可執行文件的完整路徑名,如:C:\ASM\HELLO.EXE〈回車〉。後面的兩個提示為可選項,直接按回車。注意,若打開LINK程序時未給出OBJ文件名,則LINK程序會首先提示讓你輸入OBJ文件名(Object Moles),此時輸入OBJ文件名HELLO.OBJ並回車,然後進行的操作與上面完全相同。如果沒有錯誤,LINK就會建立一個HELLO.EXE文件。如果OBJ文件有錯誤,LINK會指出錯誤的原因。對於無堆棧警告(Warning:NO STACK segment)信息,可以不予理睬,它不影響程序的執行。如鏈接時有其它錯誤。須檢查修改源程序,重新匯編、連接,直到正確。5.執行程序建立了HELLO.EXE文件後,就可以直接在DOS下運行此程序,如下所示:C:>HELLO〈回車〉C:>程序運行結束後,返回DOS。如果運行結果正確,那麼程序運行結束時結果會直接顯示在屏幕上。如果程序不顯示結果,我們如何知道程序是否正確呢?例如,這里的HELLO.EXE程序並未顯示出結果,所以我們不知道程序執行的結果是否正確。這時,我們就要使用TD.EXE調試工具來查看運行結果。此外,大部分程序必須經過調試階段才能糾正程序執行中的錯誤,調試程序時也要使用TD.EXE。
❺ 匯編語言程序設計程序結構可分為哪四種
1.順序程序結構
2.分支或選擇程序結構
3.循環程序結構
4.子程序
❻ 匯編語言程序設計的特點
●認識領先。《匯編語言程序設計》根據人的認識規律實踐-理論-實踐的特點組織教學內容,在全書開始及各重要章節開始,都以完整的實例引導,學生通過實例能感性地了解到需要學習的內容以及意義,比純概念式的灌輸能產生更好的教學效果。
●准確定位。《匯編語言程序設計》強調為應用類讀者服務,力求門檻低、內容全、描寫細膩,與「應用類」讀者群的需求相適應。選擇從具有代表性、匯編難度適中的8086/8088入手,重點關注匯編語言程序設計方法,為學生進一步掌握計算機控制技術、學習計算機介面和單片機等課程打好基礎。
●精選用例。《匯編語言程序設計》在設計用例時,突出主要知識點及應用中的關鍵問題,盡量減少代碼量並給出詳細注釋,讓程序結構與設計思想一目瞭然。
●加強輸入/輸出程序設計的教學。《匯編語言程序設計》加入了對外設操作常用晶元的介紹,著重討論外部連接、工作方式及其設定,學習相關程序設計方法,突出軟體方面內容。對於這一部分,教師可以根據實際情況靈活處理,即使之後開設介面課,多數會基於C語言教學,《匯編語言程序設計》介紹的輸入輸出內容也是有益的銜接。
●配套實驗指導。隨《匯編語言程序設計》出版,我們將在出版社網站上同時發布相應的實驗指導材料,採用認識-模仿-組裝-創新的結構組織實驗內容。在每次實驗前,教師可以向學生下發當次實驗的電子文檔,學生上機時,有些內容只需要復制、粘貼就可以進入實質性的實驗,突出匯編語言程序演算法與設計方法的學習,避免將大量的時間用到文字輸入與審校中。為了讓學生充分思考問題,又設計了一些帶創新性的問題,包括程序組裝與程序設計題,引導學生不斷深入。
❼ Intel匯編語言程序設計 和 王爽的匯編語言 那本比較好
話說怎麼這么來巧,這三自本我都看過。。。
王爽的簡單,容易明白,容易入門,沒法精通。
Intel匯編語言,內容詳細,缺點就是太厚了,你可以和王爽的比下,快3本了。
所以他寫的比較全面。
windows32,這個我曾經是作為後續才看到,因為它是WIN32匯編,不是X8086匯編了,
他使用的是WINDOWS界面編程。win32匯編和8086匯編類似於MFC和C的的關系一樣。
調用的都是API,就不是單純的MOV ADD JMP了。
需要學習WIN32匯編,最好是在8086匯編的基礎上去學習,就像是從簡單的學起,。
下面是我的建議:
如果你只想了解,開拓視野。建議去學王爽的,簡單,容易理解,加個匯編交流群,網路一個小甲魚匯編視頻,一半個月就自學會了。
如果你想玩黑客,破解。。。那最好去學習,intel的。如果你連這都看不明白,那麼想深入的搞清楚匯編語言,一個字,難。
如果你是學計算機的,想在windows下進行編程,並且想最個有界面的,可以先學,王爽,然後學習win32.
❽ 簡述用匯編語言進行程序設計的步驟。
匯編語言程序設計步驟:
(1)分析問題:已知條件、要解決的問題、功能/性能要求等。
(2)建立數學模型:把問題數學化、公式化,便於計算機處理。
(3)確定演算法:簡單、速度快、精度高、代碼量小、編程容易。
(4)繪製程序流程圖:用箭頭、框圖、菱形圖等表示程序結構。
(5)內存空間分配:為程序或數據分配內存空間。
(6)編製程序與靜態檢查:程序結構層次簡單、清楚、易懂。
(7)程序調試:利用調試軟體DEBUG進行調試。
❾ 匯編語言程序設計方法
編碼不容易,望能幫到樓主。。樓主好好看
CRLF MACRO ;宏定義,實現回車換行
MOV AH, 2
MOV DL, 0DH
INT 21H
MOV AH, 2
MOV DL, 0AH
INT 21H
ENDM
D SEGMENT
SCORE DB 76,69,84,90,73,88,89,63,100,80 ; 數組接收分數
S DB 5 DUP(?) ; 預留5個位置存儲每個分數段的人數
WORDS DB "THE NUMBER BETWEEN 60~69 IS: $"
WORDS1 DB "THE NUMBER BETWEEN 70~79 IS: $"
WORDS2 DB "THE NUMBER BETWEEN 80~89 IS: $"
WORDS3 DB "THE NUMBER BETWEEN 90~99 IS: $"
WORDS4 DB "THE NUMBER BETWEEN 100 IS: $"
D ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:D
BG:
MOV AX,D
MOV DS,AX
CALL COUNT ; 調用子程序
MOV AH,9 ; 輸出每個分數段的人數
LEA DX,WORDS
INT 21H
MOV AH,2
MOV DL,S
ADD DL,30H
INT 21H
CRLF
MOV AH,9
LEA DX,WORDS1
INT 21H
MOV AH,2
MOV DL,S+1
ADD DL,30H
INT 21H
CRLF
MOV AH,9
LEA DX,WORDS2
INT 21H
MOV AH,2
MOV DL,S+2
ADD DL,30H
INT 21H
CRLF
MOV AH,9
LEA DX,WORDS3
INT 21H
MOV AH,2
MOV DL,S+3
ADD DL,30H
INT 21H
CRLF
MOV AH,9
LEA DX,WORDS4
INT 21H
MOV AH,2
MOV DL,S+4
ADD DL,30H
INT 21H
CRLF
MOV AH,4CH
INT 21H
COUNT: ; 子程序入口
MOV CX,10 ; 循環 10次
MOV SI,0
LOP:
INT 3
MOV AL,SCORE[SI]
CMP AL,70
JB NUMBER6 ; 比較進入不同的標號進行計算每個分數段人數
CMP AL,80
JB NUMBER7
CMP AL,90
JB NUMBER8
CMP AL,100
JE NUMBER10
JMP NUMBER9
NUMBER6: ; 不同標號之下的作用是計算每個分數段人數並存於預留的位置中
MOV BL,S
INC BL
MOV S,BL
JMP L
NUMBER7:
MOV BL,S+1
INC BL
MOV S+1,BL
JMP L
NUMBER8:
MOV BL,S+2
INC BL
MOV S+2,BL
JMP L
NUMBER9:
MOV BL,S+3
INC BL
MOV S+3,BL
JMP L
NUMBER10:
MOV BL,S+4
INC BL
MOV S+4,BL
JMP L
L:
INC SI
LOOP LOP
RET ; 子程序結束,放回主程序
CODE ENDS
END BG
❿ 簡單介紹一下匯編語言程序設計
匯編比較好的書有:王爽老師《匯編語言》,楊季文老師的《80X86匯編語言程序設計》。看匯編不看保護模式的程序設計的話,匯編也就白學了,所以保護模式非常重要。當然這也是匯編一些應用的基礎,比如軟體解密,驅動的編寫。有了好書,肯定會事半功倍的。這些書上也會肯定會有HELLO WORLD的實現。學習匯編首先從數制學起,各種數制的轉換肯定也是非常重要的基礎。然後學習基本的8086指令,程序設計的3種語句形式(順序,循環,選擇)接著是學習調用DOS的一些系統功能實現簡單的程序,最後進入了最重要的一部分保護模式的程序設計,開始學習80386指令等等,我就不詳說了,路漫漫其修遠兮。以上還只是停留在DOS時代,還沒有進入復雜的windows世界。現在的windows都是VISTA了。
匯編其實也不是這么神秘,不過是很多人習慣了高級語言的東西,再看匯編就很不習慣了,因為很多事情都得自己做。包括棧的平衡等。樓主既然一定想做,那麼就回答了2個問題,what,why。接下來就死haw了,編程的學習當時是要靠多上機練習。輕松匯編,這是一個大學生開發的匯編集成環境,初學的時候可以在上面用。學習編程,最重要的是調試,匯編代碼級的調試也是軟體解密的關鍵。所以學了匯編,比較高的境界就是看懂別人的程序,當然不是從源代碼,而是反匯編代碼。保護模式很重要,因為在windows下,自己肯定是弄不了保護模式了,我不知道能不能在cmd下面調用從實模式到保護模式的程序,沒試過,應該是不行吧。如果不行的話,可以裝個虛擬機,裡面安裝DOS,在windows裡面寫好程序後,做成ISO文件,再進入DOS,編譯執行保護模式程序,我是這么做的,不知道還有其他更簡便的方法沒有,你可以自己摸索下。以上是個人意見哈,供參考。