Ⅰ 如何編寫最簡單的匯編語言
了解計算機CPU原理:詳情請參照「80X86計算機組織」和「80X86的指令系統和定址方式」
求表達式Y=A*X+B-C的值,已知A、B、C分別存放在DA-1、DA-2、DA-3位元組單元,它們的值分別是:5 、 6、 7,X存放在INPUT位元組單元,結果Y放入JSJ_10位元組單元。
分析順序結構程序代碼:由記事本敲出來的
data segment da_1 db 5 da_2 db 6 da_3 db 7 input db 1 jsj_10 db 0data ends ;這一段在內存中定義了一個段,叫做data,並且其中存入了5個變數並且付入初值,db代表每個變數佔用1個位元組,若是dd則為字,為2個位元組code segment ;名字叫做code的段的定義,顯然這兒作為代碼段,當然code這個名字可以更改 assume cs:code,ds:data ;指定data為DS數據段,code為CS代碼段start: mov ax,data ;加法指令 mov ds,ax ;加法指令 mov al,da_1 ;加法指令
mov bl,input ;加法指令
mul bl ;乘法 add al,da_2 sub al,da_3 ;減法 mov jsj_10,al
exit: mov ah,4ch int 21h ;這兩行相當於ret(返回值),就像C語言中的return 0;
code ends end start
注釋: XXXX segment
.............
XXXX ends ;定義一個段
assume ds:XXXX 把XXXX段指定為ds(ds是段地址寄存器)
請先提前把masm edit debug link文件放入預定的文件夾,並把編寫的xxxx.asm代碼文件放入該文件夾,asm文件可用記事本寫成,並改格式txt為asm(有的看不到文件後綴.txt的請參照網路)
Ⅱ 簡單匯編語言實例
(1)判斷雙字的高位字是不是1,如果不是,直接返回
(2)清除進位標志
(3)將低字求反,然後 +1
(4)將進位保存起來
(5)將高位字求反,加上剛才的進位
--------------
XXXX:
MOV AX, X + 1 ;取 X 的高位字
CMP AX, 32768
JB X_EXIT ;是正數就跳轉
MOV AX, X ;取 X 的低位字
XOR AX, 0FFFFH ;取反
ADD AX, 1
PUSHF
MOV X, AX
MOV AX, X + 1 ;取X 的高位字
XOR AX, 0FFFFH ;取反
POPF
ADC AX, 0
MOV X + 1, AX
X_EXIT:
RET