汇编语言两个多位十进制数相加代码
- 格式:ppt
- 大小:34.50 KB
- 文档页数:5
深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间: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范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
c++位运算与进制转换C++中的位运算和进制转换是编程中常用的操作,下面是一些用C++语言实现的示例代码,演示了进制转换和位运算符的使用:```cpp#include<iostream>#include<bitset>int main(){// 进制转换int decimal =255;// 十进制转二进制std::cout <<"Decimal "<< decimal <<" in binary: "<< std::bitset<8>(decimal)<< std::endl;// 十进制转十六进制std::cout <<"Decimal "<< decimal <<" in hexadecimal: 0x"<< std::hex << decimal << std::endl;// 位运算unsigned int a =60; //0011 1100unsigned int b =13; // 0000 1101// 位与std::cout <<"a & b = "<<(a & b)<< std::endl; // 输出12 (0000 1100) // 位或std::cout <<"a | b = "<<(a | b)<< std::endl; // 输出61 (0011 1101) // 位非std::cout <<"~a = "<<(~a)<< std::endl; // 输出4294967235 (1111 1111 1111 1111 1111 1111 1100 0011)// 位异或std::cout <<"a ^ b = "<<(a ^ b)<< std::endl; // 输出49 (0011 0011)return 0;}```在上述代码中,我们使用了`bitset`库来进行二进制和十六进制的转换。
两个十进制按位与的计算结果
"十进制按位与的计算结果,探索数字之间的奇妙交织"
在数字世界中,我们经常需要对数字进行各种运算,其中按位与运算是一种常见的操作。
当我们将两个十进制数字进行按位与运算时,我们会发现其中蕴藏着许多奇妙的数学现象和逻辑推理。
假设我们有两个十进制数字,27和18。
它们的二进制表示分别为11011和10010。
当我们对它们进行按位与运算时,我们会得到结果10,即2的十进制表示。
这个结果背后的数学原理值得我们深入探索。
首先,按位与运算是一种逻辑运算,它要求两个数字的对应位同时为1时,结果位才为1。
这意味着按位与运算能够帮助我们发现数字之间的共同特征和交集。
在我们的例子中,27和18的二进制表示中,只有第二位上同时为1,因此按位与的结果为2。
其次,按位与运算还有许多实际应用。
在计算机领域,按位与运算常常用于掩码操作和位操作,帮助我们对数据进行精确的处理和筛选。
通过深入理解按位与运算的原理和特性,我们能够更好地
应用它们于实际问题中,提高计算效率和数据处理精度。
最后,按位与运算的结果也反映了数字之间的奇妙交织。
在我们的例子中,27和18这两个数字看似毫无关联,但通过按位与运算,我们发现了它们之间的共同之处,这种数学上的交织和联系让我们对数字世界有了更深刻的理解。
因此,十进制按位与的计算结果不仅仅是一种数学运算,更是数字世界中的奇妙探索。
通过深入研究和理解按位与运算的原理和应用,我们能够更好地理解数字之间的关系,提高计算效率,拓展数学思维,从而更好地应对现实生活和工作中的挑战。
《汇编语言》实验报告——累加器制作2014级计算机科学与工程学院学号:姓名一、实验要求:1.显示 INPUT N:,提示用户输入数字字串2.检测输入字串的合法性,非法给出提示3.将输入数字字串转化为数值,存入变量n4.累加1~n,存入变量sum5.以十进制显示sum二、流程图:三、源代码:DATAS SEGMENTstr1 db "Input N:","$"str2 db "sum=","$"str3 db 0ah,"error","$"n dw 0sum dw 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXLEA dx,str1;输出提示符mov ah,9int 21hinput:mov ah,01;输入数字int 21hcmp al,0dh;判断是否为回车jz step1cmp al,"0";判断字符合法性jb errorcmp al,"9"ja errorsub al,"0";转化为ASCII码mov ah,0;此段将高位乘10push axmov ax,nshl ax,1push axmov cl,2shl ax,clpop bxadd ax,bxmov bx,0;高位与低位相加pop bxadd ax,bxmov n,axxor cx,cx;设定累加次数mov cx,njmp inputstep1:mov ax,cxsub cx,1step2:add ax,cx;求累加和loop step2mov sum,axlea dx,str2mov ah,9int 21hmov cx,0mov ax,sumstep3:mov dx,0mov bx,10;将结果除以10并把余数压进栈div bxpush dxinc cxcmp ax,0hjnz step3step4:xor ax,axpop ax ;栈内依次输出mov dx,axadd dx,30hint 21hloop step4jmp lasterror:lea dx,str3;输出错误提示语mov ah,9int 21hlast:MOV AH,4CHINT 21HCODES ENDSEND START四、实验测试截图五、实验心得:本次试验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果。
程序:素数1. [100,999]范围内同时满足以下两个条件的十进制数. ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数; 求有多少个这样的数?15 #include<math.h> //头文件int prime(int x) //定义函数{int i,k;k=sqrt(x);for(i=2;i<=k;i++)if (x%i==0) break;if (i>k) return(1);else return(0);}main() //主函数{ int i,n=0,a,b,c;for(i=100;i<=999;i++){ a=i/100;b=i%100/10;c=i%10;if ((b+c)%10==a&&prime(i))n++;}printf("Total is:%d",n);}2. [300,800]范围内同时满足以下两个条件的十进制数. ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数;求满足上述条件的最大的三位十进制数。
#include<math.h>int prime(int x){int i,k;k=sqrt(x);for(i=2;i<=k;i++)if(x%i==0) break;if(i>k) return(1);else return(0);}main(){int a,b,c,i,n=0;clrscr();for(i=800;i>=300;i--){ a=i/100;b=i%100/10;c=i%10;if((b+c)%10==a&&prime(i)) n++;if(n==1) break;}printf("%d",i);}3. 除1和它本身外,不能被其它整数整除的正整数称为素数(注:1不是素数,2是素数)。
第1章进制及码元1.进制转换129= 81H= 10000001B=201Q298= 12AH= 100101010B=452Q1000= 3E8H= 1111101000B= 1750Q5DH= 1011101 B= 135 Q= 93 D3E8H= 1111101000 B= 1750Q= 1000 D;357Q=11101111 B= 0EF H= 239 D3.数据表示范围:一字节的无符号数表示范围为0~255,有符号数(补码)表示范围为-l28—+127。
一个字的无符号数表示范围为0~65535,有符号数(补码)表示范围为—32768~+32767。
N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1).4.35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53 ,代表压缩8421BCD码等价的十进制值为35 ,代表非压缩8421BCD码等价的十进制值为5。
5.FFH代表无符号数时等价的十进制值为255 ,代表补码有符号数时等价的十进制值为一1 ,代表反码有符号数时等价的十进制值为一0 ,代表原码有符号数时等价的十进制值为一l27。
6.--20的8位二进制补码为ECH ,原码为94H ,反码为EBH 。
158的16位二进制补码为009EH,原码为009EH ,反码为009EH 。
第2章微机硬件基础1.计算机系统硬件的五大功能部件及其主要功能?答:硬件系统按功能模块分为运算器、控制器、存储器、输入设备、输出设备。
运算器主要完成算术运算、逻辑运算及移位运算,其中主要包括算术逻辑运算单元Arithmetic Logic Unit,ALU)和暂存数据(原始、中间、结果)的寄存器(Register,R)。
控制器实现对计算机部件的协调调度完成指令的分析执行,其中主要有程序计数器Program Counter,PC)或叫指令指针(Instruction Pointer,IP)、指令寄存器(Instruction register,IR)、指令译码器(Instruction Decoder,ID)、微操作命令发生器、时序发生器等。
微机实验作业两个多位十进制数相加实验二两个多位十进制数相加一、要求:将两个多位十进制数(如四位)相加,要求被加数、加数以ASCII 码形式按顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前)。
结果显示在屏幕上。
二、目的:1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序过程。
程序如下:STACK SEGMENT STACK 'STACK'DW 100H DUP(?)STACK ENDSDA TA SEGMENTADD1 DD H ;加数以组合十进制形式存放在双字单元ADD2 DD HSUM DD ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DATA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SI,ADD1 ;将16位偏移地址传送到通用寄存器中LEA DI,ADD2LEA BX,SUMMOV AL,[SI]ADD AL,[DI] ;最低位的一个字节相加DAA ;加法组合BCD码调整MOV [BX],AL ;结果存放在SUM第一个字节MOV AL,[SI+1] ;第二个字节相加ADC AL,[DI+1]DAAMOV [BX+1],ALMOV AL,[SI+2]ADC AL,[DI+2]DAAMOV [BX+2],ALMOV AL,[SI+3]ADC AL,[DI+3]DAAMOV [BX+3],ALMOV DL,00 ;最高位字节有进位则显示"01" ADC DL,00 CALL DISPSUMMOV AH,4CH ;返回DOSINT 21HDISPSUM PROC NEAR ;结果显示子程序PUSH AXPUSH BXPUSH CXPUSH SIMOV SI ,4PUSH DXMOV CX,5LAB:PUSH CXPUSH BXMOV AL,DLMOV BL,DLMOV CL,4 ;显示高位字节SHR AL,CLADD AL,30HMOV AH,02MOV DL,ALINT 21H ;显示一位字符AND BL,0FH ;显示低位字节ADD BL,30HMOV AH,02MOV DL,BLINT 21HPOP BXPOP CXDEC SIMOV DL,[BX][SI] ;结果显示LOOP LAB POP DXPOP SIPOP CXPOP BXPOP AXRETDISPSUM ENDPCODE ENDSEND START。