微机实验 两个多位十进制数相加的实验
2.1多位十进制数相加程序

太原理工大学现代科技学院课程实验报告专业班级学号姓名指导教师实验名称 多位十进制数相加程序 专业班级 学号 姓名 成绩 一、实验目的: 学习数据传送和算数运算指令的用法 二、实验内容: 将两个多位十进制数28056,47193相加,并显示加数,被加数, 和。
要求两个加数均以ASC Ⅱ码形式各自顺序存放在DATA1和 DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。
三、程序流程图:四、程序列表: ……………………………………装………………………………………订…………………………………………SHOW MACRO B MOV DL,B MOV AH,02H INT 21H ENDM DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H DATA3 DB'__',0DH,0AH,'$' DATA ENDS STACK SEGMENT STACK STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA2 MOV BX,05 SHOW 20H CALL DISPL SHOW 0DH SHOW 0AH MOV SI,OFFSET DATA1 MOV BX,05 SHOW 2BH CALL DISPL SHOW 0DH SHOW 0AH MOV CL,7 S1: SHOW 2DH LOOP S1 SHOW 0DH SHOW 0AH MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL ADDA MOV SI,OFFSET DATA1 MOV BX,05 ……………………………………装………………………………………订………………………………………SHOW 20H CALL DISPL MOV AX,4C00H INT 21H DISPL PROC NEAR DS1: SHOW [SI+BX-1] DEC BX JNZ DS1 RET DISPL ENDP ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05 CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL INC SI INC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05 AD3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX JNZ AD3 RET ADDA ENDP CODE ENDS END START……………………………………装………………………………………订………………………………………截图:……………………………………装………………………………………订…………………………………………。
微机原理上机 汇编语言程序 编写程序求两个十进制数之和并将和以十进制数的形式送屏幕显示

上机作业二一.实验目的1.熟练把握汇编语言程序设计的方式及上机步骤。
2.把握算术运算指令的应用。
3.把握子程序的设计方式。
4.把握DOS功能的挪用方式。
二.实验仪器586微机一台三.实验内容编写程序求两个十进制数之和,并将和以十进制数的形式送屏幕显示。
编程要求与提示:[1] 从键盘输入两个十进制数(如与),以二进制数形式寄存在ADD1和ADD2为首址的存贮器单元,输入一个十进制数采纳子程序形式。
[2] 和以二进制数的形式存入SUM以下单元。
[3] 将和送到屏幕显示采纳子程序形式。
[4] 实验步骤如下:a. 用全屏幕编辑软件成立源程序。
b.用汇编程序对源程序进行汇编,形成目标程序。
c. 用连接程序对目标程序进行连接形成可执行文件。
d. 用DEBUG对连接通过的可执行程序进行调试。
四.源程序STACK SEGMENT STACK 'STACK'DW 100H DUP(?)TOP L ABEL WORDSTACK ENDSDATA SEGMENTFAKE DW 0KEYBUFFER DB 100DB ?DB 100 DUP(?)BUF DB 8 DUP(?),'$'ADD1 DW ?A1 DW ?ADD2 DW ?A2 DW ?SUM DW ?S1 DW ?STRING1 DB 'PLEASE input decimal data: $' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AXMOV ES,AXMOV AX,STACK MOV SS,AXLEA SP,TOPCALL INPUT1 CALL TRANS10TO16 MOV ADD1,AX MOV A1,DXCALL DISPCR CALL INPUT1 CALL TRANS10TO16 MOV ADD2,AX MOV A2,DXCALL DISPCR MOV SUM,AX MOV S1,DXADD AX,ADD1 ADC DX,A1MOV S1,DXCALL far ptr ADISPMOV AH,4CHMOV AL,0INT 21HINPUT1 PROC NEARLEA DX,STRING1MOV AH,09HINT 21HMOV AH,0AHLEA DX,KEYBUFFERINT 21HLEA SI,KEYBUFFER+1retINPUT1 endpTRANS10TO16 PROC NEAR PUSH CXPUSH SI; PUSH BX ???XOR DX,DXXOR CX,CXMOV CL,[SI]INC SIMOV AL,[SI]INC SISUB AL,30HDEC CXJCXZ TRANSF2MOV BX,10TRANSF1: CALL MULAXI PUSH DXJO TRANSF_ERRMOV DL,[SI]INC SISUB DL,30HADD AL,DLADC AH,0JC TRANSF_ERRPOP DXLOOP TRANSF1TRANSF2: JMP TRANSF_OK TRANSF_ERR: MOV BX,-1 TRANSF_OK: P OP SIPOP CXretTRANS10TO16 endp MULAXI PROC NEAR PUSH CXPUSH AXMOV AX,DXMUL BXMOV CX,AXPOP AX ;XOR DX,DXMUL BXPUSH AXMOV AX,CXADD AL,DLADC AH,DHMOV DX,AXPOP AXPOP CXretMULAXI endp DISPCR PROC NEAR PUSH AXPUSH DXMOV AH,2MOV DL,0AHINT 21HMOV AH,2MOV DL,0DHINT 21HPOP DXPOP AXretDISPCR endp ADISP PROC FAR PUSH AXPUSH CXPUSH DXPUSH BXLEA SI,BUF+7MOV BX,10000DIV BXPUSH AXMOV AX,DXXOR DX,DXMOV BX,10MOV CX,4L1: DIV BXMOV [SI],DLXOR DL,DLADD BYTE PTR [SI],30H DEC SILOOP L1CMP SI,OFFSET BUF JC L2POP AXMOV CX,4JMP L1L2:LEA DX,BUFMOV AH,09HINT 21HPOP BXPOP DXPOP CXPOP AXretfADISP endpCODE ENDSEND START五、实验体会实验中碰到的问题和解决方式:在这几回的编程实验中,我碰到了许多问题。
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间:2015-10-19实验报告提交时间:2015-11-02教务处制五、程序说明(预习)七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:ADD2.ASM ADD1.ASM2.可执行程序路径及文件名:八、上机调试情况说明EMU8086:一:没有键盘录入1.结果显示如下:2.程序运行时的各段地址:3.两个子程序IP入口:4.改变两个加数数值5.子程序格式及其调用方法和宏汇编区别子程序格式:子程序名称PROC NEAR ; 子程序定义; …子程序内容RET ;子程序返回子程序名称ENDP ;子程序结束调用格式:CALL 子程序名称注意事项:1、子程序不能直接传递参数,需要自行定义变量。
2、注意保护现场和恢复现场。
宏汇编与子程序的区别:1、宏汇编有宏展开,子程序没有2、宏汇编可以传递参数。
二:键盘录入DOS:例如:250+250=500例如:62142+63123=125265九、实验结果与分析结果如下:十、实验总结(必备部分,评分重要依据之一)本次实验实则是对实验二的加强巩固基础上,进行更加友好的人机交互设计;通过本次实验不仅在程序中首先把两个加数固定,在实验二的基础上扩展位数,考虑到最高位进位的情况,并最终得出正确结果;后来又通过键盘录入两个加数,增加了人机交互的设计,如此一来,更加加深了对寄存器的使用,汇编语言宏定义,子程序调用以及DOS功能调用的学习。
同时,通过本次实验的学习,更加熟练了EMU8086工具的使用,也把理论课上学习到的汇编操作指令实际操作,对汇编语言的风格加深认识。
MOV DL,BLINT 21HCRLFJMP BEGINERROR:CRLFMOV AH,09H ;显示输入错误LEA DX,STRING3INT 21HCRLFJMP BEGINEXIT:CRLFMOV AH,09H ;显示成功退出LEA DX,STRING4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
多位十进制数加法器实验-2014

实验三多位十进制数加法器设计1、实验目的(1)继续熟练掌握在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程;(2)学习数据传送和算术运算指令的用法;(3)掌握子程序设计方法;(4)掌握宏汇编设计方法;(5)掌握键盘输出的DOS功能调用方法。
2、实验内容(1)将两个多位十进制数相加。
要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结果。
(2)在以上程序基础上,设计一个多位十进制数加法器,键盘输入十进制加数和被加数,将输入和输出结果以竖式形式显示在屏幕。
3、提示:(1)算法说明:以42136与12547相加为例,首先将两个数中的每一位都以ASCII码存入相应的内存单元,然后将每一位数都减去30H,并将被加数DATA1和加数DATA2相对应位相加(BCD码加法及其十进制调整,要考虑低位向高位的进位),存入相应的结果DATA3存储单元中,最后将该单元中的每一位数转换成相应的ASCII码,调用DOS系统功能调用的显示字符指令,显示两数相加的结果。
(2)部分程序代码:DATA SEGMENT ;数据段…;补充必要的代码,定义被加数、加数和结果变量DATA ENDSSTACK SEGMENT STACK ;堆栈段STA DB 64 DUP(0)SP_TOP DB 0STACK ENDSCODE SEGMENT ; 代码段…;补充必要的代码;显示回车换行功能用宏定义CRLF实现,放在代码段最前面CRLF MACROMOV DL,0DH ;回车(0DH为回车的ASCII 码)MOV AH,02H ; 送DOS 的中断调用功能号INT 21H ; DOS 的中断调用...;补充必要的代码:用DOS功能调用实现换行,0AH为换行的ASCII 码ENDMSTART:...; 补充必要的代码:程序开头必须要有的五条指令; 显示被加数,并回车换行MOV BX, OFFSET DATA1MOV SI, 05CALL DISPL ; 显示被加数,DISPL为显示子程序CRLF ; 回车、换行宏调用…; 补充必要的代码,显示加数CALL ADDA ;调用加法运算子程序…; 补充必要的代码,显示结果…; 补充必要的代码:回车、换行...; 补充必要代码:主程序结束,返回DOS;DISPL为字符串显示子程序DISPL PROC NEAR ; 子程序定义DSL: MOV AH,02 ; 送显示功能号MOV DL,[BX+SI-1] ; 显示字符串中一字符INT 21H ; DOS INT 21 功能调用DEC SI ;修改偏移量JNZ DSLRETDISPL ENDP; 多位数加法子程序ADDA PROC NEAR...;需要自编的求和核心程序RETADDA ENDP;代码段与程序结束CODE ENDSEND START(3)加法器的设计:需要用到字符串输入和字符串输出的DOS功能调用。
微机实验:两个多位十进制数相加的实验

实验一、两个多位十进制数相加的实验1、实验目的(1).学习数据传送和算术运算指令的用法。
(2).熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
2、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。
3、程序框图4、参考程序:DATAS SEGMENTDAT1 DB 5 DUP (0)DAT2 DB 5 DUP (0)DAT3 DB 6 DUP(0)JH DB'+','$'HX DB'_______','$';此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV DL,20H; 输入空格用以竖式对齐MOV AH,02HINT 21HLEA BX,DAT1MOV CX,5INADD1: MOV AH,01HINT 21HMOV [BX],ALINC BXLOOP INADD1MOV DL,0AH; 换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,JH; 输出加号MOV AH,09HINT 21HLEA SI,DAT2MOV CX,5INADD2: MOV AH,01HINT 21HMOV [SI],ALINC SILOOP INADD2MOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,HX; 输出横线MOV AH,09HINT 21HMOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21H;以下计算结果LEA BX,DAT1+4LEA SI,DAT2+4LEA DI,DAT3+5MOV CX,5CLC ;清除CF标志位L1: MOV AL,[BX]ADC AL,[SI]AAAPUSHFOR AL,30H; 将AL转换为ASCII码POPFMOV [DI],ALDEC DIDEC BXDEC SILOOP L1MOV CL,6;6位循环6次JNC OUT1;没有进位直接输出MOV byte ptr [DI],31H;有进位给最高位赋1 ;以下输出显示OUT1:MOV DL,[DI]INC DIMOV AH,02HINT 21HLOOP OUT1MOV AH,4CHINT 21HCODES ENDSEND START。
两个多位十进制数相加实验

实验一两个多位十进制数相加实验一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程二、实验要求1 独立完成每个实验项目2 按照程序流程图编好实验程序三程序框图Array加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验二将键盘输入的小写字母转换成大写字母一实验目的了解小写字母和大写字母在计算机内的表示方法,学习如何转换二、实验要求1 独立完成每个实验项目2三程序框架加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验三输入字符一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验四8255A并行口实验一、实验目的加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。
二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。
三、实验原理PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。
拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
程序:CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOAPT EQU 0070HIOBPT EQU 0071HIOCPT EQU 0072HIOBDATA EQU 0500HCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0640HSTART: J MP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV DS,AXMOV AL,82HMOV DX,IOCONPTOUT DX,ALMOV DX,IOBPTIN AL,DXMOV BYTE PTR DS:[0501H],ALMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOBPTMOV AL,DS:[0501H]OR AL,0F0HOUT DX,ALMOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY1IOLED0: MOV AL,10100101BMOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1OR AL,0F0HOUT DX,ALMOV CX,8HIOLED1: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,10101111BOUT DX,ALCALL DELAY2OR AL,01010000BOUT DX,ALCALL DELAY2LOOP IOLED1MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2MOV AL,01011010BOUT DX,ALCALL DELAY1CALL DELAY1OUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,01011111BOUT DX,ALCALL DELAY2OR AL,10100000BOUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2JMP IOLED0DELAY1: PUSH AXPUSH CXMOV CX,0030HDELY2: CALL DELAY2LOOP DELY2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000HDELA1: LOOP DELA1POP CXRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0640H],405BHADD BX,2MOV WORD PTR DS:[BX+0640H],4040HADD BX,2MOV WORD PTR DS:[BX+0640H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0640H],7F5BHRETCODE ENDSEND START四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在实验机箱上连好实验线路3 观察实验现象4 分析实验结果实验五8259中断控制器实验一、实验目的1.掌握8259中断控制器的接口方法.2.掌握8259中断控制器的应用编程.二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。
微机原理实验之两位十进制数相加

计算机硬件实验室实验报告课程名称:微机原理及应用
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)
源代码:
Mov AH,1
Int 21H
Mov BH, AL
Mov AH,1
AND Bh, 0fH
Int 21h
Mov BL,AL
AND Bl, 0fH
Mov DL, '+'
Mov AH, 2
Int 21h
MOV AH, 1
INT 21H
Mov CH,AL
AND CH, 0fH
Mov AH, 1
INT 21H
Mov CL,AL
AND CL, 0fH
ADD BL, CL
Mov Al,BL
Mov AH,00H 四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)
结论如上图
五.结论
本次实验完成了简单的两个两位十进制数相加。
完成了表达式的输出,将实验跟理论相结合,加深了对知识的理解。
AAA Mov Bl,Al ADC BH,CH Mov AL,BH Mov AH,00H AAA Mov CH,AH Mov CL,Al ADD BL, 30H ADD CX, 3030H Mov DL, '=' Mov AH, 2 Int 21H Mov DL,CH Mov AH, 2 Int 21H Mov DL, CL Mov AH, 2 Int 21H Mov DL,BL Mov AH, 2 INT 21H。
微机原理实验之两位十进制数相加

微机原理实验之两位十进制数相加实验目的:了解和掌握两位十进制数相加的原理和方法,熟悉数字电路的组成和工作原理。
实验器材:数字计算器、示波器、两位十进制加法器。
实验原理:在计算机中,数字电路是基础。
而十进制数相加是数字电路中最基本的运算之一、十进制数可以用二进制数表示,通过逻辑门和添加器电路可以实现十进制数的加法运算。
十进制数是由0~9这10个基本数字组成。
每一位都有从0到9的取值范围。
当两位十进制数相加时,需要对个位、十位等位上的数字进行相加,并向高一位进位。
具体的加法过程可以通过数字电路来实现。
一个两位十进制数相加的示例:23+56首先从个位数开始相加,3+6=9,个位上的结果是9;然后从十位数开始相加,2+5=7,十位上的结果是7;将个位和十位上的结果合并,得到最终结果79实验步骤:1.准备好实验器材,确保电路连接的正确性。
2.输入两个需要相加的两位十进制数,例如23和56,将这两个十进制数转化为二进制数。
3.将两个二进制数输入到相应的输入端口,将输入数送入两位十进制加法器。
4.确认输入数的有效性,检查输入数的范围是否符合要求。
5.等待计算器输出结果,结果以二进制数的形式表示。
6.确认结果的正确性,将输出数转化为十进制数。
7.对比计算结果与预期结果,分析原因。
实验结果:输入数:23、56预期结果:79实际结果:79分析和讨论:在本次实验中,我使用了两位十进制加法器,将两个两位十进制数相加。
实验结果显示,实际结果与预期结果一致,说明实验顺利完成。
通过这个实验,我了解到了两位十进制数相加的原理和方法。
在实际应用中,十进制数相加往往需要通过数字电路来实现。
对于更高位数的十进制数相加,可以通过级联多个十进制加法器来实现。
总结:通过本次实验,我掌握了两位十进制数相加的原理和方法,了解了数字电路的组成和工作原理。
继续深入学习和实践,在实际应用中灵活运用数字电路知识,将有助于提高计算和运算效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 两个多位十进制数相加的实验
一、实验目的
1. 学习数据传送和算术运算指令的用法。
2. 熟悉在PC机上建立、汇编、连接、调试和运行8088汇编语言程序的过程。
二、实验内容
将两个多位十进制数相加,要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。
附加题要求将加法过程显示与屏幕。
同学可以自己设计程序也可对代码段进行填空以及问答来完成程序。
(附加题范例在第二页)
;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3
DATA SEGMENT
DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。
DAT2 DB'12345';个位存放于高地址或者为低地址。
DAT3 DB 6 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA BX,DAT1
LEA SI,DAT2
LEA DI,DAT3
MOV CX,5
CLC ;为什么要加入这条指令
L1: MOV AL[BX]
ADC AL,[SI] ;BYTE PTR[BX]+[SI]+CF→AL 例‘1’+‘1’+0= 62H→AL
__________;填空________________; AL=02H
PUSHF;为什么要加入pushf popf这两条指令
OR AL,30H;为什么要加入这条指令
POPF
MOV [DI],AL
__________;填空________
__________;填空________
__________ ;填空________
LOOP L1
JNC L2
MOV [DI],31H
INC DI
hlt
CODE ENDS
END START
三、程序框图(见下页)
附加题1范例
;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3并显示于屏幕DATA SEGMENT
DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。
DAT2 DB'12345'
DAT3 DB 6 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA BX,DAT1
LEA SI,DAT2
LEA DI,DAT3
MOV CX,5
CLC
L1: MOV AL[BX]
ADC AL,[SI]
;填空________________
PUSHF;为什么要加入pushf popf这两条指令
OR AL,30H;为什么要加入这条指令
POPF
MOV [DI],AL
;填空________
;填空________
;填空________
LOOP L1
JNC L2
MOV [DI],01H
;下面是附加显示
L2: ADD [DI],30H
INC DI
PUSH DI ;分析此时DI指向和的哪一位?
PUSH SI
PUSH BX
POP SI
DEC SI ;为什么要减一
MOV CX,5
CALL DISP
MOV DL,'+'
MOV AH,2
INT 21H
;填空_________
DEC SI
MOV CX,5
CALL DISP
MOV DL,'='
MOV AH,2
INT 21H
POP SI
DEC SI
MOV CX,;______填空
CALL DISP
HLT
;disp入口参数SI为显示字符串的末偏移地址以及显示字符串的个数CX
;DISP以倒序的方式逐个显示一个多位十进制数的
DISP PROC
L3: MOV DL,[SI]
MOV AH,2
INT 21H
;填空_____________
LOOP L3
;填空________
DISP ENDP
CODE ENDS
附加题2:
程序中变量如下数据段所定义,D1-D4为用ASCII字符串表示的十进制数字(说明:低地址为高的权位如DA1字符串表示一千两百三十四),完成D1-D4的累加并存入D5 DATA SEGMENT
D1 DB ‘1234’
D2 ‘DB ‘2234’
D3 DB ‘3234’
D4 DB ‘5345’
D5 DB 5 DUP(0)
DATA ENDS
附加题3:
程序中变量如下数据段所定义,D1-D4为用ASCII字符串表示的十进制数字(说明:低地址为高的权位如DA1低地址为十位,高地址为个位),每个字符串以0DH结束。
要求将D1-D4转换为数值形式存入DA1-DA4(说明:’34’十进制数字符串转换后DA4为20H
DATA SEGMENT
D1 DB ‘16’,0DH
D2 ‘DB ‘123’,0DH
D3 DB ‘2344’, 0DH
D4 DB ‘55345’,0DH
DA1 DW 0 DA2 DW 0 DA3 DW 0 DA4 DW 0 DATA ENDS
实验3 两个数相乘的实验
一、实验目的
掌握乘法指令和循环指令的用法
二、实验内容
实现十进制数的乘法。
被乘数和乘数均以ASCII码的形式存放在内存中,乘积存放于内存.。
附加:将乘法过程在屏幕上显示出来。
即实现1234×4=4963 以及1234×45=55530;
要求被乘数、乘数不超过65535,积不超过4294967295即(FFFFFFFFH)。