王爽 汇编语言 检测点 14.2

Posted 木剑配酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了王爽 汇编语言 检测点 14.2相关的知识,希望对你有一定的参考价值。

1.程序说明

  编程,用加法和移位指令计算(ax)=(ax)*10.

  提示, (ax)*10=(ax)*2+(ax)*8.

2.程序描述

  因为看其他人的答案,都发现不是很完美,没有考虑进位,最后答案会有很大的偏差.所以自己写下自己的想法

  (1) 如果ax足够大,那么ax*10的结果在ax中就无法保存.我们必须用另一个寄存器存储高位的值.

  用dx存储ax*2的值  bx存储进位.    

3.代码

 1 assume cs:code
 2 code segment
 3     start:
 4         mov ax,5345h
 5         mov bx,0    ;bx存储ax左移的进位值
 6         mov dx,ax    ;bx存储最开始的ax值
 7         ;ax*8 将ax左移3位,因为每左移一次都可能进位,所以选择用循环
 8         mov cx,3
 9     s1:    
10         shl bx,1    ;先将高位*2,再将低位*2
11         shl ax,1
12         adc bx,0    ;将低位进位值加到高位
13         loop s1
14         
15         shl    dx,1    ;计算 ax*2
16         adc bx,0
17                     
18         add ax,dx    ;ax*8+ax*2 
19         adc bx,0
20             
21         s:            ;无限循环,防止退出
22             jmp short s
23         mov ax,4c00h
24         int 21h
25 code ends
26 end start

4.结果 

   5345h*10 最后的结果就是340B2h,bx存储高位,ax存储低位.

以上是关于王爽 汇编语言 检测点 14.2的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言 王爽 第四版 课后检测点 课后实验 包括解释 持续更新~~

王爽 汇编 检测点10.4

汇编语言 王爽 第四版 第六章 检测点6.1

汇编语言 王爽 第四版 第三章 检测点3.1

汇编语言 王爽 第四版 第三章 检测点3.2

汇编语言(第三版)王爽 检测点2.2