1 / 21
文档名称:

实验二 算术运算实验.docx

格式:docx   大小:390KB   页数:21页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验二 算术运算实验.docx

上传人:一花一世 2019/5/22 文件大小:390 KB

下载得到文件列表

实验二 算术运算实验.docx

文档介绍

文档介绍:膆实验二算术运算实验袃实验目的肁掌握MASMforWindows环境下的汇编语言编程环境使用;螆掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD羃码的表示形式;羁蒁掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志薇位的影响及测试方法;肅掌握无符号数和有符号数运算区别及编程方法;莃掌握BCD码调整指令的使用方法袀软硬件实验环境芇1、硬件环境:惠普64位一体化计算机及局域网;肆2、软件环境:windows8,红蜘蛛管理系统,MASMforWindows。蒂三、实验基本原理荿算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。羇1)标志位袄在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。袄表1标志名和状态符号的对照表参照表蝿螈2)加减法指令羅ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。羂3)乘除法指令膈MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。蒈4)符号位扩展指令羆CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。肁5)BCD码的调整指令袂在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。芈组合的BCD码加法调整指令DAA;螄组合的BCD码减法调整指令DAS;蒃非组合的BCD码加法调整指令AAA;芁非组合的BCD码减法调整指令AAS;罿乘法的非组合BCD码调整指令AAM;袅除法的非组合BCD码调整指令AAD。薂8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示内容。螀表2数据类型的数据运算表蒅羆四、实验步骤与内容羄1)对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响:膀①实验分析膆本实验要求简单,仅对指定三组数进行基本运算。只需使用ADD、SUB、MUL、DIV四个运算命令,并以MOV命令作为数值转移的手段即可。运算结果和状态标志的情况可以通过debug调试中的T命令进行逐步查看。蚄需要注意的主要有以下几点:肂在进行加法和乘法运算时,会出现对高位的进位扩展。因此,在记录结果的时候不能仅仅记录低2位(十六进制)的结果,应记录包含高位的完整结果;蕿在使用MUL和DIV命令时,语句的写法与ADD和SUB有区别;羆除法运算既可得到商,也可得到余数,余数存在DL中;螅查看结果时以三个语句为一次运算,输入三个T命令后的结果才是此次运算的结果。膁②流程图羈蚆③程序样例袇1、薃DATASSEGMENT蒈;此处输入数据段代码蒇BUF1DB0ABH,64H,0A2H蚄BUF2DB78H,5AH,3FH蚁BUF3DB10DUP(?)膁DATASENDS***蚅STACKSSEGMENT肄;此处输入堆栈段代码薁STACKSENDS羇蒃CODESSEGMENT膂ASSUMECS:CODES,DS:DATAS,SS:STACKS羀START:蚈MOVAX,DATAS薄MOVDS,AX芁MOVSI,0葿MOVCX,2莈Q1:薅MOVAH,0H蚃MOVAL,BUF1[SI]衿MOVBL,AL腿MOVAL,BUF2[SI]莃ADDAX,BX;进行运算螁MOVBUF3[SI],AL芈ADDSI,X蒄JNZQ1;跳转再做一次第二组数的加法运算肄羁莅MOVAX,4CH薆INT21H节CODESENDS莁ENDSTART膆2、芃莀STACKSSEGMENT袀;此处输入堆栈段代码袆STACKSENDS莄蚃CODESSEGMENT芀ASSUMECS:CODES,DS:DATAS,SS:STACKS薆START:蒆MOVAX,DATAS袁MOVDS,AX虿MOVSI,0莇MOVCX,2芃Q1:膄MOVAH,0H肈MOVAL,BUF2[SI]肇MOVBL,AL芄MOVAL,BUF1[SI]节SUBAX,BX螂MOVBUF3[SI],AL袈ADDSI,1H;X蒀JNZQ1;doitagainwiththesecondgroupofnumbers芁薈膃MOVAX,4CH螃INT21H蚀CODESENDS莈ENDSTART膅3、DATASSEGMENT袁;此处输入数据段代码肀BUF1DB0ABH,64H,0A2H聿BUF2DB78H,5AH,3FH芆BUF3DB10DUP(?)芃DATASENDS葿蝿STACKSSEGMENT肃;此处输入堆栈段代码莂STACKSENDS羈芅CODESSEGMENT膅ASSUM