实验2(两个两位十进制数相加)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 一、实验目的
两个两位十进制数相加
1、掌握使用运算类指令编程及调试方法; 、掌握使用运算类指令编程及调试方法; 2、掌握顺序结构程序的设计和调试方法。 、掌握顺序结构程序的设计和调试方法。 二、实验内容 已知在DATA1和DATA2单元中各存放有一个两位的十进 和 已知在 单元中各存放有一个两位的十进 制数,求它们的和并把结果存入DATA3单元。 单元。 制数,求它们的和并把结果存入 单元 三、程序流程图
非压缩BCD运算举例: 运算举例: 非压缩 运算举例 (1) 计算 ) 计算6+7=? ? MOV AL, 06H ADD AL, 07H ; (AL)=0DH AAA ;(AH)=01H,(AL)=03H (2)计算 )计算55-9=? ? MOV AH,05H MOV AL, 05H SUB AL, 09H ; (AL)=FCH , AAS ; (AH)=04H,(AL)=06H
DAA 加法的十进制调整指令 格式: 格式:DAA 执行操作: 执行操作: (AL) ) 把AL中的和调整到 组合的 中的和调整到 组合的BCD码格式 码格式
说明:执行该指令前必须执行 指令, 说明:执行该指令前必须执行ADD或ADC指令,加法 或 指令 指令必须把两个组合的BCD 码相加,并把结果存放在 码相加, 指令必须把两个组合的 AL寄存中。 寄存中。 寄存中
(1)压缩的 )压缩的BCD码调整指令 码调整指令 ● DAA ● DAS 加法的十进制调整指令 减法的十进制调整指令
(2)非压缩的 )非压缩的BCD码调整指令 码调整指令 ● AAA ● AAS ● AAM ● AAD 加法的ASCII码调整指令 码调整指令 加法的 减法的ASCII码调整指令 码调整指令 减法的 乘法的ASCII码调整指令 码调整指令 乘法的 除法的ASCII码调整指令 码调整指令 除法的
四、源程序(加注释) 源程序(加注释) 五、实验步骤 写出上机操作的具体步骤, 写出上机操作的具体步骤,每一步要求仅写出具体 命令,屏幕显示信息不用写。 命令,屏幕显示信息不用写。 提示:生成EXE文件后,将EXE文件调入 文件后, 文件调入DEBUG调 提示:生成 文件后 文件调入 调 命令查看MOV AX,XXXX(DATA)语句,即 语句, 试,用U命令查看 命令查看 语句 得数据段段地址XXXX。 得数据段段地址 。 命令运行后, 用G命令运行后,用D XXXX:0000 L3命令检查 命令运行后 命令检查 DATA1、DATA2和DATA3单元的内容,要求把屏幕 单元的内容, 、 和 单元的内容 显示的结果写出来,然后对实验结果进行分析, 显示的结果写出来,然后对实验结果进行分析,看 结果是否正确(写出在DEBUG环境下调试程序的具 结果是否正确(写出在 环境下调试程序的具 体步骤)。 体步骤)。
DAS
减法的十进制调整指令
格式: 格式:DAS 执行操作:( :(AL) 执行操作:( )
把AL中的差调整到 组合的 中的差调整到 BCD码格式 码格式
说明:执行该指令前必须执行SUB或SBB指令, 说明:执行该指令前必须执行 或 指令, 指令 减法指令必须把两个组合的BCD 码相减,并把 码相减, 减法指令必须把两个组合的 结果存放在AL寄存中。 结果存放在 寄存中。 寄存中
指令 的调整方法是: 的调整方法是: 标志位为1,或者AL寄存器的低 寄存器的低4位是 (1)如果 标志位为 ,或者 寄存器的低 位是 )如果AF标志位为 十六进制的A~F,则AL寄存器的内容减去 , 寄存器的内容减去06H,且 十六进制的 寄存器的内容减去 , 位置1;wenku.baidu.com将AF位置 ; 位置 (2)如果 标志位为1,或者AL寄存器的高 寄存器的高4位 )如果CF 标志位为 ,或者 寄存器的高 位 是十六进制的A~F,则AL寄存器内容减去 , 寄存器内容减去60H,并 是十六进制的 寄存器内容减去 , 位置1。 将CF位置 。 位置
AAS
减法的ASCII码调整指令 码调整指令 减法的 把AL中的差调整到 未组合 中的差调整到 未组合BCD格式 格式
格式: 格式:AAS 执行操作:( ) 执行操作 (AL)
说明:执行该指令前必须执行 指令, 说明:执行该指令前必须执行SUB或SBB指令,减法 或 指令 指令必须把两个未组合的BCD码相减,并把结果存放 码相减, 指令必须把两个未组合的 码相减 寄存中。 在AL寄存中。 寄存中 指令的调整步骤: 指令的调整步骤: 寄存器中的低4位在十六进制数 之间或AF (1)如AL寄存器中的低 位在十六进制数 ) 寄存器中的低 位在十六进制数A~F之间或 之间或 寄存器的内容减去6, 寄存器的内容减 寄存器的内容减1, 为1,则 AL寄存器的内容减去 ,AH寄存器的内容减 , , 寄存器的内容减去 并将AF位置 , 位置 位置1 并将 位置1,CF位置 位置 寄存器的高4位 (2)清除 寄存器的高 位 )清除AL寄存器的高
AAA 加法的 加法的ASCII调整指令 调整指令 格式: 格式:AAA 执行操作: 执行操作: (AL) ) 把AL中的和调整到 未组合的 中的和调整到 未组合的BCD码格式 码格式
说明:执行该指令前必须执行 指令, 说明:执行该指令前必须执行ADD或ADC指令,加 或 指令 法指令必须把两个未组合的BCD码相加,并把结果 码相加, 法指令必须把两个未组合的 码相加 存放在AL寄存中 寄存中。 存放在 寄存中。 指令的调整步骤: 指令的调整步骤: 寄存器中的低4位在十六进制数 (1)如AL寄存器中的低 位在十六进制数 ) 寄存器中的低 位在十六进制数A~F之间或 之间或 AF为1,则 AL寄存器的内容加 ,AH寄存器的内容加 寄存器的内容加6, 寄存器的内容加 为 , 寄存器的内容加 1,并将 位置 位置1,CF位置 位置1 ,并将AF位置 位置 寄存器的高4位 (2)清除 寄存器的高 位 )清除AL寄存器的高
提示: 提示 十进制调整指令 BCD码:用二进制编码的十进制数,又称二--十进制数 码 用二进制编码的十进制数,又称二--十进制数 压缩的BCD码:用 4 位二进制数表示 1 位十进制数 压缩的 码 例:( 59 )10 =( 0101 1001 )BCD=59H 非压缩的BCD码:用 8 位二进制数表示 1 位十进制数 码 非压缩的 例:( 59 )10 =( 0000 0101 0000 1001 )BCD=0509H 数字的 ASCII 码是一种 非压缩的 BCD 码 DIGIT ASCII BCD 0 30H 0011 0000 1 31H 0011 0001 2 32H 0011 0010 … … … 9 39H 0011 1001
压缩BCD运算举例: 运算举例: 压缩 运算举例 (1)计算 +64=113 )计算59+ = MOV ADD DAA AL, 59H AL, 34H ; (AL)=BDH ; BDH+06H=B3H ;B3H+60H=13H,CF=1, ;CF表示结果的百位值 表示结果的百位值 表示结果的 (2)计算 -39=35 )计算74- = MOV SUB DAS AL, 54H AL, 39H ; (AL)=3BH ; (AL)=3BH-06H=35H
的调整方法是: 指令 的调整方法是: 标志位为1,或者AL寄存器的低 寄存器的低4位是十 (1)如果 标志位为 ,或者 寄存器的低 位是十 )如果AF标志位为 六进制的A~F,则AL寄存器的内容加 寄存器的内容加06H,且将 位 六进制的 , 寄存器的内容加 ,且将AF位 置1; ; 标志位为1,或者AL寄存器的高 寄存器的高4位是十 (2)如果 )如果CF 标志位为 ,或者 寄存器的高 位是十 六进制的A~F, AL寄存器内容加 寄存器内容加60H,并将CF位置 六进制的A~F,则AL寄存器内容加60H,并将CF位置 1。 。
相关文档
最新文档