當前位置:首頁 » 編程軟體 » 加法匯編程序

加法匯編程序

發布時間: 2022-04-02 12:22:18

⑴ 簡單的匯編加法程序

; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code

W dw 378
X dw 456
Z dw 269

Start: push cs
pop ds ;使數據段與代碼段同段

mov ax,X
sub Z,ax ;Z-X→Z
mov ax,W
add Z,ax

Exit_Proc: mov ah,4ch ;結束程序
int 21h

Code ENDS
END Start ;編譯到此結束

⑵ 匯編語言中加法程序(初學匯編,希望有程序說明)

data segment
a db 1
b db 2
c db 3
d db ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
cmp a,0
jnz next1
cmp b,0
jnz next1
cmp c,0
jnz next1
mov al,a
add al,b
add al,c
mov d,al
jmp tj
next1:
mov a,0
mov b,0
mov c,0
tj:
mov ah,4ch
int 21h
code ends
end start
請參考

⑶ 用匯編實現一個加法的exe程序

過程如下:
1、編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM),如:LX.ASM;
2、匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM
LX.ASM;
3、連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK
LX.OBJ;
4、執行:如果結果在屏幕在顯示,則直接執行可執行文件。
5、調試:用調試程序(DEBUG.EXE)對可執行文件進行調試,格式如下:DEBUG
LX.EXE

⑷ 匯編加法程序

;經驗證,下式結果正確
;S=86H*34H-22H=1B38H-22H=1B16H
code segment
assume cs:code,ds:code
org 100h ;COM格式
start:
push cs
pop ds
mov ax,0e53h ;顯示'S'
int 10h
mov al,'=';顯示'='
int 10h
call @IN
mov dl,al
mov bl,2ah;"*"
call show ;顯示'H*'
call @IN
mov dh,al
mov bl,2dh ;"-"
call show ;顯示'H-'
call @IN
mov ah,0
mov bp,ax
mov bl,3dh ;"="
call show ;顯示'H='
mov ah,0
mov al,dl ;AL←86H
mov bl,dh ;BL←34H
mul bl ;86H*34H
;未考慮不夠減的情況
sub ax,bp ;AX←AX-22H
mov cx,4
mov dx,ax
next:
push cx
mov cl,4
rol dx,cl
mov ax,dx
and al,0fh ;取出一位
or al,30h ;二進制轉換為Ascii
cmp al,'9';比9小直接顯示
jb T2
add al,7 ;是A`F的,加7校正
T2:
mov ah,0eh ;顯示Ascii
int 10h
pop cx
loop next ;下一位
mov ax,0e48h ;'H'
int 10h
mov ah,0
int 16h ;暫停
mov ah,4ch
int 21h ;結束

@IN:;可輸入兩位十六進制數
xor bx,bx ;BX←0
mov cx,4
@1:call input
mov bl,al
shl bl,cl ;BL←BL*10H
call input
add al,bl ;AL←兩位十六進制數
ret

input: ;僅允許輸入並顯示0-9和A-F
mov ah,0
int 16h ;無回顯鍵盤輸入
cmp al,'0';十六進制數 0-F
jb input ;為有效輸入
cmp al,'9'
jbe Q1
and al,0dfh ;大小寫,同轉為大寫
cmp al,'A';"A(a)"
jb input
cmp al,'F';"F(f)"
ja input
Q1:mov ah,0eh
int 10h ;顯示有效輸入
sub al,30h ;0-9之間,Ascii轉換為二進制
cmp al,9
jbe Q3
sub al,7
Q3:ret

show:
mov ax,0e48h ;"H"
int 10h
mov al,bl
int 10h
ret

code ends
end start

⑸ 匯編語言中的加減法

(加減指令,既作為無符號數影響標志位CF,AF,又作為有符號數影響標志OF,SF。想了半天終於搞清楚了,CF標志反映最高位的進借位情況,而OF反映結果是否溢出,這里的結果是目的操作數中的結果,進借位它是不管的。你這樣想的原因是,考慮到CF為1,則肯定溢出了,但是目的操作數中只能保存溢出後的值,丟掉了最高位,所以就不一定溢出了。看例子:
MOV
AX,7896H;
ADD
AL,AH;
;執行完後CF=1,AL=0EH,但是OEH不溢出,所以OF=0;
後面一句也不對吧。)
以上是我個人的理解。
以下是復制別人的理解:
CF
比較簡單吧,
沒有什麼特別的.
OF
表示的帶符號數進行運算是否溢出.
96+78,
一個是正數,
一個為負數,
相加肯定是不會有溢出的.
OF
溢出只可能發生在兩個相同符號的數值相加,
或者是不同符號數相減.
如果是從演算法判斷上來看,
如果是在運算時,
次高位向最高位和最高位向
CF
位產生進位情形一致的話,
OF=0;
否則
OF=1.
96
10010110
+78
01111000
10E
100001110
這里,
次高位和最高位都產生了進位,
情形一致,
所以
OF=0
16
00010110
+78
01111000
08E
10001110
這里,
次高位向最高位產生了進位,
而最高位沒有向
CF
產生進位,
所以
OF=1
而且,
結果也是,
兩個正數相加,
結果為負數了,
顯然溢出
還有兩種情況,
也是類似的.
一個是都沒有產生進位,
那應該是兩個小的正數相加,
結果還是正數,
沒有溢出;
另外就是次高位沒有產生進位,
但最高位產生進位了,
這應該是兩個負數相加,
由於次高為位沒有產生進位,
所以,
最高位,
也就是符號位結果為
0,
是正數,
顯然也是溢出了.

⑹ 用匯編語言編一個加法程序

;輸入格式必須為A+或-或/或*B=
;按回車結束運算數為(0~255)
DATAS SEGMENT
x db 20 p(?)
y db 'chu cuo le','$'
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
JMP A
KAISHI:
;回車換行
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
INT 21H
LEA SI,X
SUB AX,AX
SUB BX,BX
SUB CX,CX
SUB DX,DX
;輸入數字
A: MOV AH,01H
INT 21H
CMP AL,0DH
JZ L
CMP AL,30H
JB B
CMP AL,3AH
JNB F
SUB AL,30H
MOV CH,AL
MOV AL,BL
MOV BL,0AH
MUL BL
ADD AL,CH
MOV BL,AL
JMP A
;判斷+-*/=
B: CMP AL,2BH
JNZ K
MOV X[SI],BL
INC SI
MOV CL,0H
AND BL,0
JMP A
K: CMP AL,2DH
JNZ D
MOV X[SI],BL
INC SI
MOV CL,01H
AND BL,0
JMP A
D: CMP AL,2AH
JNZ E
MOV X[SI],BL
INC SI
MOV CL,02H
AND BL,0
JMP A
E: CMP AL,2FH
JNZ T
MOV X[SI],BL
INC SI
MOV CL,03H
AND BL,0
JMP A
;計算
F: MOV [SI],BL
CMP AL,3DH
JNZ T
LEA SI,X
MOV AL,X[SI]
INC SI
MOV BL,X[SI]
CMP CL,0
JNZ G
ADD AL,BL
JMP J
G: CMP CL,01H
JNZ H
SUB AL,BL
JMP J
H: CMP CL,02H
JNZ I
AND AH,0
MUL BL
JMP J
I: AND AH,0
CMP CL,03H
DIV BL
;輸出
J: AND AH,0
CMP AL,100
JB ER
MOV BL,100
DIV BL
MOV CL,AH
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,CL
ER: CMP AL,10
JB YI
MOV BL,10
AND AH,0
DIV BL
ADD AL,30H
MOV DL,AL
MOV CL,AH
MOV AH,02H
INT 21H
MOV AL,CL
YI: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
JMP KAISHI
T: LEA DX,Y
MOV AH,09H
INT 21H
JMP KAISHI
L: MOV AH,4CH
INT 21H
CODES ENDS
END START

⑺ 匯編加法的實現

ASSUMECS:CC,DS:CC
;----------------------------
CCSEGMENT

XDB5
YDB4
ZDB?

TIPDB'z=',36
BEG:
MOVAX,CC
MOVDS,AX

MOVDL,X
ADDDL,Y
MOVZ,DL

LEADX,TIP
MOVAH,9
INT21H

MOVDL,Z
ADDDL,'0'
MOVAH,2
INT21H
EXIT:
MOVAH,4CH
INT21H
;----------------------------
CCENDS
ENDBEG

⑻ 如何用匯編語言編一個計算加法的程序

輸入格式必須是A +或 - 或/或* B =
;按Enter年底計算數(0255)

DATAS段

所述DB 20 p的(?)

DB'CHU痤勒','$'

DATAS ENDS

CODES分部

ASSUME <CS:CODES過,DS的人:DATAS START如下:

MOV AX,DATAS

MOV DS,AX

。JMPA

KAISHI:

;回車換行符

MOV DL,0DH MOV的AH,02H INT 21H

MOV DL,0AH

INT 21H

的LEA SI中,X

SUB AX的,AX

SUB的BX,BX

SUB CX,CX

SUB DX,DX

;輸入數字

- 答:MOV AH,01H

INT 21H

CMP AL,0DH
> JZ

的CMP AL,30H

JBB

的CMP AL,3AH

JNB F

SUB AL,30H

MOV CH,AL的
> MOV AL,BL

MOV BL,0AH

的MUL BL

ADD AL,CH

MOV BL,AL的

。JMP

;的判斷+ - * / =

B:的CMP AL,2BH

JNZ MOV X [SI],BL

INC的SI

MOV CL,0H

AND BL, 0

JMPA

K:的CMP AL,2DH

JNZe

MOV X [SI],BL

INC的SI

MOV CL,01H
title>和BL,0 JMPA

D:的CMP AL,2AH

JNZê

MOV X [SI],BL

INC SI

MOV CL,02H

AND BL,0

JMPA

E:的CMP AL,2FH

JNZ

MOV X [的SI],BL

INC的SI

,03H MOV CL

和BL,0

JMPá

;計算

F:MOV [SI],BL

CMP AL,3DH BR /> JNZ

的LEA SI中,X

MOV的AL中,X [SI]

INC的SI

MOV BL中,X [SI]

CMP CL,0 BR /> JNZ

ADD AL,BL

JMP

G:的CMP CL,01H

JNZ SUB AL,BL

JMP J BR /> H:的CMP CL,02H

JNZ我

AND AH,0

的MUL BL

JMP

我:AND AH,0

CMP CL,03H

DIV BL

;輸出

J:和AH,0

的CMP AL,100

JB ER

MOV的BL,100
> DIV BL

MOV CL,AH

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,CL BR /> ER「:●CMP AL,10個

JB毅

MOV BL,10

AND AH,0

DIV BL

ADD AL,30H

MOV DL,AL

MOV CL,AH

MOV的AH,02H

INT 21H

MOV AL,CL

YI「:ADD AL,30H

MOV DL的, AL

MOV的AH,02H

INT 21H

JMP KAISHI

T:LEA的DX,Y。 MOV AH,09H

INT 21H

JMP KAISHI

L:MOV的AH,4CH的

INT 21H
CODES ENDS 」END START「

⑼ 匯編語言的加法運算

這個與具體的硬體有關系,主要是這個輸出到屏幕的話···
把結果的每一位十進制數轉換成對應的ascii碼,傳送(mov)到顯存去。
具體過程自己去看匯編語言的書去。
再多我也不知道了,或許我比你更年輕。目前大一。
前面的加法倒是超簡單,
mov
ax,9
add
ax,1
然後將ax每位對應的ascii碼傳送到顯存去。

⑽ 匯編語言 加法

這個與具體的硬體有關系,主要是這個輸出到屏幕的話··· 把結果的每一位十進制數轉換成對應的ASCII碼,傳送(mov)到顯存去。 具體過程自己去看匯編語言的書去。 再多我也不知道了,或許我比你更年輕。目前大一。 前面的加法倒是超簡單,
mov ax,9
add ax,1
然後將ax每位對應的ASCII碼傳送到顯存去。

熱點內容
160android 發布:2025-05-10 03:03:30 瀏覽:178
pythonstorage 發布:2025-05-10 02:58:38 瀏覽:499
如何查看電腦配置顯卡參數 發布:2025-05-10 02:37:00 瀏覽:106
證券交易密碼在哪裡修改 發布:2025-05-10 02:31:56 瀏覽:839
javafor是什麼意思 發布:2025-05-10 02:23:09 瀏覽:842
學生雲伺服器可以搭建網站嗎 發布:2025-05-10 02:10:36 瀏覽:441
共享的文件怎麼訪問許可權 發布:2025-05-10 02:02:49 瀏覽:166
如何選生信分析伺服器 發布:2025-05-10 01:53:11 瀏覽:409
移動ip案例雲dns伺服器 發布:2025-05-10 01:51:46 瀏覽:166
俠盜飛車解壓密碼是多少 發布:2025-05-10 01:45:04 瀏覽:713