试编写汇编语言程序完成两个1位十进制数的加法功能

试编写汇编语言程序完成两个1位十进制数的加法功能,第1张

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: AdditionASM

Addition SEGMENT

ASSUME CS:Addition,DS:Addition

ORG 100H

Start: JMP Begin

First_Num DB 'The first number:$'

Second_Num DB 'The second number:$'

Addi_Sum DB 'The sum is '

SumASCII DB 2 DUP('0'),'$' ; 两数之和的2位ASCII数字

Exit_Mark DB 0

; Subroutine

GLOBAL Get_Num:NEAR ;从键盘接受一个1位数

Get_Num Proc Near

MOV AH,9

INT 21H

InputChr: MOV AH,1

INT 21H

CMP AL,27 ;Esc

JZ Set_Exit

CMP AL,'0'

JB InputChr

CMP AL,'9'

JG InputChr

AND AL,0FH

RET

Set_Exit: INC Exit_Mark ;置退出标志

Ret

Get_Num EndP

Begin: MOV AX,3

INT 10H ;设置视频显示方式为80x25 16色文本方式

LEA DX,First_Num ;提示输入第一个1位数字符串地址

Call Get_Num ;从键盘接受一个1位数

CMP Exit_Mark,1

JZ Exit_Proc ;若退出标志置位,则结束程序

MOV SumASCII,AL ;保存第一个1位数

MOV AH,3

XOR BH,BH

INT 10H ;取光标位置

INC DH ;行号增1

XOR DL,DL ;列号置零

XOR BH,BH

MOV AH,2

INT 10H ;置光标位置为下行首列

LEA DX,Second_Num ;提示输入第二个1位数字符串地址

Call Get_Num ;从键盘接受第二个1位数

ADD AL,SumASCII ;两个1位数相加

CBW

MOV BL,10

DIV BL ;和除以10,商数存于AL,余数存于AH

OR AX,3030H ;把商数和余数转换成ASCII码

CMP AL,'0'

JG Disp_Sum ;若商>0,显示两数之和

MOV AL,' ' ;若商=0,十位置空格

Disp_Sum:

MOV WORD PTR SumASCII,AX

MOV AH,3

XOR BH,BH

INT 10H ;取光标位置

INC DH ;行号增1

INC DH ;行号增1

XOR DL,DL ;列号置零

XOR BH,BH

MOV AH,2

INT 10H ;置光标位置为下行首列

LEA DX,Addi_Sum ;显示两数之和

MOV AH,9

INT 21H

Exit_Proc:MOV AX,4C00H ;结束程序

INT 21H

Addition ENDS

END Start

输入格式必须是A +或 - 或/或 B =

;按Enter年底计算数(0255)

DATAS段

所述DB 20 dup的(?)

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“

嘿嘿 八位二进制数相加的程序 应该设计成一个子程序ADD8:

程序入口为2个: 累加器A(存放被加数)

寄存器R5(存放加数)

程序出口1个: ( R3)(R4)=加法的和(高8 位)、(低8 位)

楼上的老兄设计的八位二进制数相加的程序,是存在错误的,没有考虑进位(即2个数相加超过256的情况)

ADD8: ADD A,R5

MOV R4,A

ADDC A,#0

MOV R3,A

RET

呵呵 满意 就选满意回答

以上就是关于试编写汇编语言程序完成两个1位十进制数的加法功能全部的内容,包括:试编写汇编语言程序完成两个1位十进制数的加法功能、如何用汇编语言编一个计算加法的程序、单片机 八位二进制数相加的程序 汇编语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9508971.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存