Ⅰ 匯編簡單程序
首先用notepad++編寫一段匯編程序:
這里我是在32位的windows系統下寫的,學匯編推薦32位win因為自帶debug可以試調,64位的要自己再安裝(這里不再說明),如果想試用不同操作系統的同學,建議裝個虛擬機,有關鏡像文件可以從mdsn裡面下。
因為我們寫的程序比較簡單,並沒有什麼輸出顯示,所以你只會看到窗口只是閃了一下,這表明程序已經成功運行完了一次。
Ⅱ 如何編寫完整的匯編程序
data segment (segment和ends是一對,一定是成對出現的)
…… (這中間就是申明你需要的數據段,例如:mess db 1,2,3;其中mess只是一個名字,可以根據自己需要來,db表示每個字元占的存儲空間,也可以用dw,dd,db是一個位元組;後面的數據根據實際情況來)
data ends (這是數據段)
extra segment
…… (申明和數據段一樣)
extra ends (這是附加段)
code_seg segment (這是代碼段)
assume cs:code_seg,ds:data,es:extra (這個一定不能少,而且順序不能換,也就是說cs一定對應代碼段,後面也是相同的)
start: (start可以沒有,但冒號不能少)
mov ax,data (這四句是固定的,只能根據名稱不同改變data、extra的名稱,其它不能變)
mov ds,ax
mov ax,extra
mov es,ax
…… (這中間就是你說的那些代碼)
code_seg ends (這兩句也不能少)
end start
Ⅲ 如何用匯編編寫以下程序
一個匯編程序是由多個段組成的,這些段被用來存放代碼、數據或當作棧空間來使用。
一個有意義的匯編程序中至少要有一個段,這個段用來存放代碼。
程序結束標記
End 是一個匯編程序的結束標記,編譯器在編譯匯編程序的過程中,如果碰到了偽指令 end,就結束對源程序的編譯。
如果程序寫完了,要在結尾處加上偽指令end 。否則,編譯器在編譯程序時,無法知道程序在何處結束。
Ⅳ 匯編語言程序該怎麼寫
codesegment
assumecs:code
org100h
start:jmpbegin
xdw11,12,13,14,15,16,17,18,19,20
ydw1,2,-3,-4,5,-6,-7,-8,9,10
signdw1,1,0,0,1,0,0,0,1,1
;1表示加,0表示減
zdw10p(?)
begin:pushcs
popds
pushcs
popes
movcx,10
cld
leasi,x
leadi,z
@main:
movax,[si]
cmpwordptr[si+40],0
je@main1
addax,[si+20]
mov[di],ax
jmp@main2
@main1:
subax,[si+20]
mov[di],ax
@main2:
incsi
incsi
incdi
incdi
loop@main
leasi,z
movcx,10
cld
@main3:
lodsw
calldispaxs
loop@main3
movah,4ch
int21h
;=========================================
;將要顯示的有符號數置於ax中
DISPAXSPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
PUSHBP
PUSHDS
PUSHES
PUSHF
PUSHCS
POPDS
PUSHCS
POPES
MOVCX,6
LEADI,DISPAXSS
@DISPAXS:
MOVBYTEPTR[DI],32
INCDI
LOOP@DISPAXS
PUSHAX
MOVDL,32
MOVAH,2
INT21H
POPAX
MOVBYTEPTRNZS,0
MOVBYTEPTRSIGNS,0
CMPAX,0
JGE@DISPAXS0
MOVBYTEPTRSIGNS,1
NEGAX
@DISPAXS0:
PUSHAX
LEASI,DIVARRS
LEADI,DISPAXSS
INCDI
MOVCX,5
@DISPAXS1:
POPAX
MOVDX,0
MOVBX,[SI]
DIVBX
PUSHDX
CMPAL,0
JNE@DISPAXS2
CMPBYTEPTRNZS,1
JE@DISPAXS2
CMPCX,1
JE@DISPAXS2
MOVDL,20H
JMP@DISPAXS3
@DISPAXS2:
ADDAL,30H
MOVDL,AL
MOVBYTEPTRNZS,1
@DISPAXS3:
MOVBYTEPTR[DI],DL
INCSI
INCSI
INCDI
LOOP@DISPAXS1
POPDX
CMPBYTEPTRSIGNS,1
JNE@DISPAXS6
LEASI,DISPAXSS
ADDSI,5
@DISPAXS4:
CMPBYTEPTR[SI],32
JE@DISPAXS5
DECSI
JMP@DISPAXS4
@DISPAXS5:
MOVBYTEPTR[SI],'-'
@DISPAXS6:
LEADX,DISPAXSS
MOVAH,9
INT21H
POPF
POPES
POPDS
POPBP
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
DIVARRSDW10000,1000,100,10,1
NZSDB0
SIGNSDB0
DISPAXSSDB32,32,32,32,32,32,'$'
DISPAXSENDP
;==================================
codeends
endstart
Ⅳ 匯編語言程序怎麼寫啊
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
AREAY DB 1,2,4,-8,16,-32,64,127
COUNT EQU $ - AREAY
MAX DB ?
MIN DB ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
LEA SI,AREAY
MOV AL,[SI]
MOV MAX,AL;假設最大值是AREAY數組的首元素
MOV MIN,AL;假設最小值是AREAY數組的首元素
MOV CX,COUNT;循環次數
LP:
INC SI;指向下一個內存單元
MOV AL,[SI]
CMP MAX,AL;和最大值比較
JG TOMIN;如果最大值大於AL,跳轉到TOMIN
MOV MAX,AL;否則最大值就是AL
TOMIN:
CMP MIN,AL;和上面同理
JL DONE
MOV MIN,AL
DONE:
LOOP LP
MOV AX,4C00H
INT 21H
CODE ENDS
END START
PS:若有不明白的地方,可以追問
Ⅵ 怎樣進入編寫匯編程序
新建工程——新建文件——保存為.asm——源代碼組右鍵「添加文件到源代碼組」,然後就可以寫程序了。具體指令什麼的,找一本匯編語言的書看吧。
Ⅶ 匯編語言程序設計的一般步驟是什麼
匯編語言程序設計的基本步驟 了解了匯編語言指令的功能和用法,了解了匯編語言程序的編寫格式,就可以編制完整的匯編語言程序了。一個程序通常具有順序、分支、循環和子程序4種結構形式。順序程序結構就是指完全按順序逐條執行的指令序列。在程序設計過程中,順序結構大量存在,屢見不鮮。但一個完整的程序只是逐條去執行指令,這非常少見。常見的程序結構,是上述4種結構的混合體。一般來說,編制一個匯編語言程序的步驟如下:(1) 分析題意,確定演算法或演算法思想。演算法是指解決問題的方法和步驟。比如現有的一些計算方法和日常生活中解決問題的邏輯思維推理方法等。(2) 根據演算法畫出流程圖,簡單的情況也可不畫。畫出描述演算法的流程圖,可以首先從圖上檢驗演算法的正確性,減少出錯的可能,使得動手編寫程序時的思路更加清晰。(3) 分配存儲空間和工作單元,合理地使用寄存器。分配存儲空間和工作單元,是指存儲空間的分段和數據定義。另外,由於寄存器的數量有限,編寫程序時經常會感到寄存器不夠用。因此,對於位元組數據,要盡量使用8位寄存器。而採用適當的定址方式,也會達到節省寄存器的目的。(4) 根據流程圖編寫程序。這是編制匯編語言程序最為重要的一步。演算法里規定的功能,是要通過一條條指令描述出來的。為了提高編程能力,對於初學者,一是要多閱讀現有的程序,以學習別人的編程經驗;而更為重要的是,必須多親自動手編寫,不要怕失敗,只有通過無數次失敗,才能從中積累自己的編程經驗。(5) 上機調試運行程序。通過匯編的源程序,只能說明它裡面不存在語法錯誤。但是它是否能達到演算法所要求的預期效果,還必須經過上機調試,用一些實驗數據來測試,才能夠真正地得出結論。可以這么說,即使是一個非常有經驗的程序員,也沒有百分之百的把握說他編寫的程序一次就成功。 用流程圖表示演算法 流程圖用一些圖形框來代表各種操作。用圖形表示演算法,直觀形象,可以用來幫助人們對演算法的理解。下圖給出了一些常用的流程圖符號。
上圖中的判斷框(菱形)用來對一個給定的條件作出判斷,以決定如何執行其後的操作。它有一個入口,兩個出口,如下圖(a)所示。
連接點(圓圈)是用來將畫在不同地方的流程線連接起來。例如在下圖(b)里,有兩個圈裡寫著數字1的圓圈,它表示是從左邊的1出來,進到右邊圖的1里(這由流程線的方向給出)。可以看出,這兩個點其實就是同一個點,只是由於畫不下而分開來畫的。用連接點,可以避免流程圖中的流程線相互交叉或過長,從而使流程圖清晰。
注釋框不是流程圖中必需的部分。在流程圖中使用它,是為了對流程圖中的某些框的操作做一些必要的說明,以便使人們能夠更好地通過流程圖來理解演算法。
處理框反映做些什麼樣的操作,如把某個單元的內容送入某個寄存器,從某個存儲單元取出數據等。它是流程圖里最為本質的、出現最多的圖形框。
輸入/輸出框反映程序的輸入和輸出情況。計算機程序無外乎接收數據,進行處理,然後加以輸出,所以輸入/輸出框是必不可少的。
Ⅷ 怎樣編寫匯編程序
是單片機的匯編嗎?書拿一本看一下,去模擬軟體下載一個,剛開始照著書上的例子編寫程序,寫多了就有感覺,然後自己可以試驗一下自己的思路,我就是這么過來的,自己練多了比看書看到死還有效。