程式是通過編寫**來實現的,就如同寫文章。
可以認為程式就是資料,資料也是程式。什麼時候是程式,什麼時候是資料,要通過**中的設計來實現的。
**可以在編輯器中寫,存放也是從左到右,從上到下。儲存後叫源**。需要編譯。還可以在直譯器裡編寫,不需編譯。
編譯是把文字**轉換成二進位制**的過程。轉換後才能在電腦上執行。
寫**的第一步,了解程式模式 扁平模式是32位的主要模式,masm語法表示
.model flat, stdcall
就是所有儲存器程式資料作為乙個段。早期由於物理技術水平限制,分了4個段。名字為cs,ds,ss,es.
實現方法就是 cs,ds,ss,es都指向乙個位置。同時增加了兩個段暫存器fs,gs。
為了更清楚在什麼機器上執行,可以指明執行cpu型別,masm語法
.686p
這裡指明的只是一種。
寫**的第二步,了解程式入口和資料入口
程式和資料放在一起,如何區分和操作是通過暫存器來實現的。暫存器包括通用暫存器有八個
eax.ebx,ecx,edx,esi,edi,esp,ebp。標誌暫存器efr和指令位置暫存器eip。最主要的要記住這些約定:
eax為累加器,ecx為計數器,ebx,ebp為基址暫存器,esi,edi為變址暫存器,ebp還可以是基址指標,esp 為堆疊指標。
段暫存器cs+eip是程式入口,ds+通用暫存器任何就是資料入口。masm語法抽象為表示
.data
資料入口
.code
程式入口
寫**的第三步,了解程式終止。
程式需要有一些初始資料,如堆疊
.stack 4096
程式不是無休無止的,必須有乙個範圍,和停止標誌,需要一些初始資料設定。
main:
invoke exitprocess,0
end main
exitprocess,0 是winapi函式,還需在**中給編譯器指明
exitprocess proto, :dword
並要放在前面。
這樣,就構成乙個簡單什麼都不做的masm程式。整理為:
.686p
.model flas,stdcall
.stack 4096
exitprocess proto,:dword
.data
.code
main:
invoke exitprocess,0
end main
c語言表現就更為簡單,如下面.模式都由系統自動完成了。
#include
void main(){
程式設計模型隨筆 1 概述篇
程式是問題求解過程的表達,表達求解過程的語言統稱為程式語言。求解過程就是邏輯,就是順序 條件 迴圈三種形式,因此程式就是用特定的語言表示的邏輯,程式是形式,邏輯是內容。模型是對事物共性的抽象,程式設計模型就是對程式設計的共性的抽象。什麼是程式設計的共性呢?最重要的共性就是 程式設計時,的抽象方式 組...
程式程式設計經驗總結(1)
近頃 総括報告 在近一段時間裡,我主要在進行 様 様 共進電機様開發,在這三個專案的開發過程中,有一些收穫,也產生了一些想法,希望可以和大家交流。我進入小組快 1個月了,從開始的練習模組到現在的正式專案,前後做了快10多個專案模組了,但是依然有bug出現!雖然大家都安慰我說 開始做都有bug的,不要...
c語言與程式設計筆記 指標篇 (1)
基本概念 1 運算元 稱為間接訪問表示式,它的操作語義是引用以運算元為位址的變數。運算元可以是表示式,但其值必須是位址值。所以間訪表示式的值是乙個左值,代表指標所指的變數。而指標所指的型別就是間訪表示式運算的型別。例 int y,x 3 pi x y pi 是先對pi進行 操作,然後計算px,即對p...