bcd码相乘汇编程序BCDcodemultiplicationassembler.docx
《bcd码相乘汇编程序BCDcodemultiplicationassembler.docx》由会员分享,可在线阅读,更多相关《bcd码相乘汇编程序BCDcodemultiplicationassembler.docx(12页珍藏版)》请在冰豆网上搜索。
bcd码相乘汇编程序BCDcodemultiplicationassembler
bcd码相乘,汇编程序(BCDcodemultiplication,assembler)
bcd码相乘,汇编程序(BCDcodemultiplication,assembler)
******************************************;
#;microcomputerprincipleandinterfacetechnologycurriculumdesign#
#;coursedesigncontent:
BCDmultiplication#
******************************************;
**************************************************************************************;
*datasegment*
**************************************************************************************;
Datasegment
STR1DB0dh,0ah,0dh,0ah,'PleaseinputaMultiplicand:
','$'
STR2DB0dh,0ah,0dh,0ah,'PleaseinputaMultiplier:
','$'
Str3DB0dh,0ah,0dh,0ah,'Theresultis:
','$'
Str4DB0dh,0ah,0dh,0ah,'PleaseinputYtocontinueorNtofinish',0dh,0ah,'$'
Str5DB0dh,0ah,0dh,0ah,'Unexpected,error','$'
Str6DB0dh,0ah,0dh,0ah,'Youinputawrongnumber!
',0dh,0ah,'$'
STR7DB0dh,0ah,0dh,0ah,'Pleaseinputagain:
','$'
Str8DB0dh,0ah,0dh,0ah,'PleaseinputYorN',0dh,0ah,'$'
MaxDB3
DB?
DB3dup(?
)
Dataends
*************************************************************************************;
*codesegment*
*************************************************************************************;
Codesegment
Assumecs:
code,ds:
data
Start:
movax,data
MovDS,ax
Begin:
leaDX,STR1
Movah,09h
Int21h
Callinput
Callidentify
MovBL,AlBLputthemultiplicand;
LeaDX,STR2
Movah,09h
Int21h
Callinput
Callidentify
MovCl,Al;multiplierinCl
Callmultiply;afterthecall,theresultisplacedindi
LeaDX,str3
Movah,09h
Int21h
Calldis_num
Calldis_sign1
MovBL,Cl
Calldis_num
Calldis_sign2
Movax,di
Calldis_result
LeaDX,str4
Movah,09h
Int21h
Next:
movah,01h
Int21h
CMPAl,'Y'
JZbegin
CMPAl,'y'
JZbegin
CMPAl,'N'
JZfinish
CMPAl,'n'
JZfinish
LeaDX,str8
Movah,09h
Int21h
JMPnext
Finish:
movah,4CH
Int21h
**************************************************;
*Name:
input*
*function:
usedasinputdata*
Exportparameter:
Maxdatasegment*
**************************************************;
Inputprocnear
Pushax
PushCX
PushDX
PushSi
Step1:
leaSi,Max
MovDX,Si
Movah,0ah
Int21h
LeaSi,Max
MovCl,[si+1]
Movch,00h
Again:
movDL,[si+2]
CMPDL,'0'
JBerror
CMPDL,'9'
JAerror
IncSi
Loopagain
JMPover
Error:
leaDX,str6
Movah,09h
Int21h
NOP
LeaDX,STR7
Movah,09h
Int21h
JMPstep1
Over:
popSi
PopDX
流行的CX
流行的斧头
RET
输入ENDP
;**************************************************
;*名称:
识别*
;*功能:
判别输入的位数*
;*入口参数:
最大的数据段*
;*出口参数:
迪中的数据*
;**************************************************
识别过程的附近
推斯
推CX
李斯,马克斯
异或铝
MOVAL,[Si+1]
CMP铝,1
JZC1
MOVAL,[Si+2]
MOVCL,4
SHLAl、Cl
MOV啊,[Si+3]
SHL啊,CL
自发性高血压大鼠
或铝,啊
JMPnode1
C1:
MOVAL,[Si+2]
MOVCL,4
SHLAl、Cl
自发性高血压大鼠
NODE1:
MOV啊,00h
MOVDI,斧
流行的CX
流行的硅
RET
识别ENDP
;**************************************************
;*名称:
乘**
;*功能:
求乘积**
;*入口参数:
BL放被乘数**
;*CL放乘数**
;*出口参数:
迪放结果**
;**************************************************
多重触发附近
把斧头
推DX
推斯
异或斧
movdx,0
加:
加铝,1
DAA
MOVDH,al
MOVAL,DL
添加铝,BL
DAA
ADC啊,0
MOVDL,al
MOVAL,啊
加铝,0
DAA
MOV啊,al
MOVBH,啊
化学机械抛光
JZBZ
JA警告
MOVAL,DH
JMP加
警告:
LEADX,str5
MOVAH,09h
INT21H
JMP间
BZ:
MOVAL,DL
MOVAH,BH
MOVDI,斧
间:
流行四
流行的DX
流行的斧头
RET;经调试发现RET指令会改变斧中的
乘ENDP;值,因此一般不用斧做出口参数
;**************************************************
;*名称:
dis_num*
;*功能:
显示被乘数和乘数*
;*入口参数:
BL中的数*
;**************************************************
dis_numproc附近
推DX
推CX
把斧头
MOVDH,BL
和BL,0f0h;显示十位
MOVCL,4
自发性高血压大鼠
添加BL,30h
MOVDL、BL
MOVAH,02h
INT21H
MOVBL,DH;显示个位
和BL,0fh
添加BL,30h
MOVDL、BL
MOVAH,02h
INT21H
流行的斧头
流行的CX
流行的DX
RET
dis_numENDP
;**************************************************
;*名称:
dis_sign1*
;*功能:
显示乘号*
;**************************************************
dis_sign1proc附近
把斧头
推DX
MOVDL,2ah
MOVAH,02h
INT21H
流行的DX
流行的斧头
RET
dis_sign1ENDP
;**************************************************
;*名称:
dis_sign2*
;*功能:
显示等号*
;**************************************************
dis_sign2proc附近
把斧头
推DX
MOVDL,3dh
MOVAH,02h
INT21H
流行的DX
流行的斧头
RET
dis_sign2ENDP
;**************************************************
;*名称:
dis_result*
;*功能:
显示乘积结果*
;*入口参数:
AX中的结果*
;**************************************************
dis_resultproc附近
推斯
推DX
第四,斧
MOVAX,Si;显示千位
啊,0f0h
MOVCL,4
自发性高血压大鼠
添加啊,30h
MOVDL,啊
MOVAH,02h
INT21H
MOVAX,Si;显示百位
啊,0fh
添加啊,30h
MOVDL,啊
MOVAH,02h
INT21H
MOVAX,Si;显示十位
铝,0f0h
自发性高血压大鼠
添加Al、30h
MOVDL,al
MOVAH,02h
INT21H
MOVAX,Si;显示个位
铝,0fh
添加Al、30h
MOVDL,al
MOVAH,02h
INT21H
流行的DX
流行的硅
RET
dis_resultENDP
代码段结束
结束的开始