阿波次嘚额仏歌 發表於 2020-4-16 23:42:00

汇编语言之加法练习程序

<p>题目描述:</p>
<div class="clearfix">
<div>  加法练习程序。要求:从键盘输入百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;按R 键继续输入下一题,按Q 键返回DOS。</div>
<div>&nbsp;</div>
<div>扩展功能:</div>
<div>  支持多位加数相加</div>
<div>&nbsp;</div>
<div>代码:</div>
<div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">enterline macro      ;定义回车换行的宏指令
</span><span style="color: rgba(0, 128, 128, 1)">2</span>   mov dl,<span style="color: rgba(128, 0, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">3</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">4</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">5</span>   mov dl,<span style="color: rgba(128, 0, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">6</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">7</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 0, 1)">endm
</span><span style="color: rgba(0, 128, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)"> 10</span> <span style="color: rgba(0, 0, 0, 1)">DATAS SEGMENT
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(0, 0, 0, 1)">    ;此处输入数据段代码
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span>   info db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Please enter an addition expression, such as A + B$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 13</span>   err db <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Illegal input! Please Try Again$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 14</span>   again db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Invalid input, try again.$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 15</span>   overout db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">The number overflowed, try again$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 16</span>   overout1 db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">The result overflowed, try again$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 17</span>   inn db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Please enter your answer$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 18</span>   win db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Congratulations, the answer is right$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 19</span>   note db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Note: press the r key to continue to input the next question, and press the q key to exit the program$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 20</span>   lose1 db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Sorry, your answer is wrong. You have 2 more chances$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 21</span>   lose2 db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Sorry, your answer is wrong. You have 1 more chances$</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 22</span>   lose3 db<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Sorry, your answer is wrong. The right answer is $</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 23</span>   
<span style="color: rgba(0, 128, 128, 1)"> 24</span>   result dw <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">      ;用于存放最终结果
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span>   errtime db ?<span style="color: rgba(0, 0, 0, 1)">    ;答案错误次数
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span>   flag db ?
<span style="color: rgba(0, 128, 128, 1)"> 27</span>
<span style="color: rgba(0, 128, 128, 1)"> 28</span>   buf db <span style="color: rgba(128, 0, 128, 1)">30</span>,?,<span style="color: rgba(128, 0, 128, 1)">30</span> dup(<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)    ;定义键盘接收字符缓冲区,最多接收19个字符
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span>   ff db ?<span style="color: rgba(0, 0, 0, 1)">      ;输出的判断前导0的标志
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span>   input db ?<span style="color: rgba(0, 0, 0, 1)">    ;储存输入的按键
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>   
<span style="color: rgba(0, 128, 128, 1)"> 32</span>   op1 dw ?<span style="color: rgba(0, 0, 0, 1)">    ;定义两个操作数
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span>   op2 dw ?
<span style="color: rgba(0, 128, 128, 1)"> 34</span> <span style="color: rgba(0, 0, 0, 1)">DATAS ENDS
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span>
<span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">STACKS SEGMENT
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)">    ;此处输入堆栈段代码
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span> <span style="color: rgba(0, 0, 0, 1)">STACKS ENDS
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span>
<span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 0, 0, 1)">CODES SEGMENT
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">    ASSUME CS:CODES,DS:DATAS,SS:STACKS
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span> <span style="color: rgba(0, 0, 0, 1)">START:
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span> <span style="color: rgba(0, 0, 0, 1)">    MOV AX,DATAS
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span> <span style="color: rgba(0, 0, 0, 1)">    MOV DS,AX
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> <span style="color: rgba(0, 0, 0, 1)">    ;此处输入代码段代码
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span>   
<span style="color: rgba(0, 128, 128, 1)"> 47</span> <span style="color: rgba(0, 0, 0, 1)">main:                ;加法模块      ;设计完加法子程序后把下面这部分也封装进去
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,info      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)"> 50</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>   
<span style="color: rgba(0, 128, 128, 1)"> 53</span>   mov errtime,<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">    ;允许犯错的次数
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span>
<span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)">    call inputi      ;调用输入的子程序,输入公式
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span>   
<span style="color: rgba(0, 128, 128, 1)"> 57</span>   cmp flag,<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)">    je main            ;由于错误输入跳回a1重新进行加法操作
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span>   cmp flag,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(0, 0, 0, 1)">    je main            ;由于溢出跳回a1重新输入
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span>   
<span style="color: rgba(0, 128, 128, 1)"> 62</span>
<span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(0, 0, 0, 1)">shuru:   
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,inn      ;提示输入信息
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)"> 66</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span>   
<span style="color: rgba(0, 128, 128, 1)"> 69</span> <span style="color: rgba(0, 0, 0, 1)">    call input2      ;调用输入的子程序,输入答案
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span>   cmp flag,<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)">    je shuru            ;由于错误输入跳回shuru
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span>   cmp flag,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)">    je shuru            ;由于错误输入跳回shuru
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span>   
<span style="color: rgba(0, 128, 128, 1)"> 75</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,result      ;判断输入的答案是否正确
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> <span style="color: rgba(0, 0, 0, 1)">    cmp bx,op1
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span> <span style="color: rgba(0, 0, 0, 1)">    je correct
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>   
<span style="color: rgba(0, 128, 128, 1)"> 79</span> <span style="color: rgba(0, 0, 0, 1)">    dec errtime      ;尝试次数减1
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span>   cmp errtime,<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">    ;剩余两次机会
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 0, 1)">    je error1
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>   cmp errtime,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">    ;剩余1次机会
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span> <span style="color: rgba(0, 0, 0, 1)">    je error2
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span>   cmp errtime,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">    ;不剩机会
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span> <span style="color: rgba(0, 0, 0, 1)">    je error3
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span>   
<span style="color: rgba(0, 128, 128, 1)"> 87</span> <span style="color: rgba(0, 0, 0, 1)">error1:
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,lose1      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)"> 90</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 0, 1)">    jmp shuru      ;执行完后跳回主菜单
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span> <span style="color: rgba(0, 0, 0, 1)">error2:
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,lose2      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)"> 96</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(0, 0, 0, 1)">    jmp shuru      ;执行完后跳回主菜单
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span> <span style="color: rgba(0, 0, 0, 1)">error3:
</span><span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,lose3      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)">101</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">102</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,result      ;result是正确的和
</span><span style="color: rgba(0, 128, 128, 1)">104</span> <span style="color: rgba(0, 0, 0, 1)">    call outi            ;输出正确结果,结束此题
</span><span style="color: rgba(0, 128, 128, 1)">105</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">106</span>
<span style="color: rgba(0, 128, 128, 1)">107</span> <span style="color: rgba(0, 0, 0, 1)">judge1:                ;结果错误时的按键提示
</span><span style="color: rgba(0, 128, 128, 1)">108</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,note      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)">109</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">110</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">111</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">112</span>
<span style="color: rgba(0, 128, 128, 1)">113</span> <span style="color: rgba(0, 0, 0, 1)">    call judge      ;判断输入的键是什么键
</span><span style="color: rgba(0, 128, 128, 1)">114</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">115</span>   cmp input,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">116</span> <span style="color: rgba(0, 0, 0, 1)">    je main
</span><span style="color: rgba(0, 128, 128, 1)">117</span>   cmp input,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">q</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">118</span> <span style="color: rgba(0, 0, 0, 1)">    je stop
</span><span style="color: rgba(0, 128, 128, 1)">119</span>   
<span style="color: rgba(0, 128, 128, 1)">120</span> <span style="color: rgba(0, 0, 0, 1)">    jmp judge1
</span><span style="color: rgba(0, 128, 128, 1)">121</span> <span style="color: rgba(0, 0, 0, 1)">correct:            ;表示结果正确
</span><span style="color: rgba(0, 128, 128, 1)">122</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,win      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)">123</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">124</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">126</span>
<span style="color: rgba(0, 128, 128, 1)">127</span> <span style="color: rgba(0, 0, 0, 1)">judge2:                ;结果正确时的按键提示
</span><span style="color: rgba(0, 128, 128, 1)">128</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,note      ;提示信息
</span><span style="color: rgba(0, 128, 128, 1)">129</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">130</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">131</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">132</span>   
<span style="color: rgba(0, 128, 128, 1)">133</span> <span style="color: rgba(0, 0, 0, 1)">    call judge      ;判断输入的键是什么键
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">135</span>   cmp input,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">r</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">136</span> <span style="color: rgba(0, 0, 0, 1)">    je main
</span><span style="color: rgba(0, 128, 128, 1)">137</span>   cmp input,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">q</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">138</span> <span style="color: rgba(0, 0, 0, 1)">    je stop
</span><span style="color: rgba(0, 128, 128, 1)">139</span> <span style="color: rgba(0, 0, 0, 1)">    jmp judge2
</span><span style="color: rgba(0, 128, 128, 1)">140</span>
<span style="color: rgba(0, 128, 128, 1)">141</span> <span style="color: rgba(0, 0, 0, 1)">stop:
</span><span style="color: rgba(0, 128, 128, 1)">142</span> <span style="color: rgba(0, 0, 0, 1)">    MOV AH,4CH
</span><span style="color: rgba(0, 128, 128, 1)">143</span> <span style="color: rgba(0, 0, 0, 1)">    INT 21H
</span><span style="color: rgba(0, 128, 128, 1)">144</span>
<span style="color: rgba(0, 128, 128, 1)">145</span> <span style="color: rgba(0, 0, 0, 1)">inputi proc            ;输入子程序如下;专门用于存表达式的子程序
</span><span style="color: rgba(0, 128, 128, 1)">146</span>   mov flag,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">      ;初始化flag,用于标志错误或溢出
</span><span style="color: rgba(0, 128, 128, 1)">147</span>   mov result,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">    ;存放累加结果
</span><span style="color: rgba(0, 128, 128, 1)">148</span>   
<span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,buf      ;从键盘接收输入数值放入buf缓冲区(输入操作)
</span><span style="color: rgba(0, 128, 128, 1)">150</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">151</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">152</span> <span style="color: rgba(0, 0, 0, 1)">    enterline      ;回车换行
</span><span style="color: rgba(0, 128, 128, 1)">153</span>   
<span style="color: rgba(0, 128, 128, 1)">154</span>   
<span style="color: rgba(0, 128, 128, 1)">155</span>   mov cl,buf+<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">    ;获取实际键入字符数,置于CX寄存器中
</span><span style="color: rgba(0, 128, 128, 1)">156</span> <span style="color: rgba(0, 0, 0, 1)">    xor ch,ch      ;ch清0
</span><span style="color: rgba(0, 128, 128, 1)">157</span>   
<span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)">    xor di,di      ;累加器清0
</span><span style="color: rgba(0, 128, 128, 1)">159</span> <span style="color: rgba(0, 0, 0, 1)">    xor dx,dx      ;dX寄存器清0
</span><span style="color: rgba(0, 128, 128, 1)">160</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">      ;由于从个位数开始算起,因而将所乘权值设为1
</span><span style="color: rgba(0, 128, 128, 1)">161</span>   
<span style="color: rgba(0, 128, 128, 1)">162</span>   lea si,buf+<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">    ;将si指向接收到的第1个字符位置
</span><span style="color: rgba(0, 128, 128, 1)">163</span> <span style="color: rgba(0, 0, 0, 1)">    add si,cx      ;因为从个位算起,所以将si指向最后1个接收到的个位数
</span><span style="color: rgba(0, 128, 128, 1)">164</span> <span style="color: rgba(0, 0, 0, 1)">    dec si            ;往回减1使其指向字串最后一个元素
</span><span style="color: rgba(0, 128, 128, 1)">165</span>
<span style="color: rgba(0, 128, 128, 1)">166</span> <span style="color: rgba(0, 0, 0, 1)">;cov是检测并生成第一个数字的步骤
</span><span style="color: rgba(0, 128, 128, 1)">167</span> <span style="color: rgba(0, 0, 0, 1)">cov:mov al,      ;取出个位数给al
</span><span style="color: rgba(0, 128, 128, 1)">168</span>   cmp al,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">+</span><span style="color: rgba(128, 0, 0, 1)">'</span>      
<span style="color: rgba(0, 128, 128, 1)">169</span> <span style="color: rgba(0, 0, 0, 1)">    jz addi      ;遇见空格则跳转
</span><span style="color: rgba(0, 128, 128, 1)">170</span>   
<span style="color: rgba(0, 128, 128, 1)">171</span>   cmp al,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">0</span><span style="color: rgba(128, 0, 0, 1)">'</span>      ;边界检查:如果输入不是0-<span style="color: rgba(0, 0, 0, 1)">9的数字,就报错
</span><span style="color: rgba(0, 128, 128, 1)">172</span> <span style="color: rgba(0, 0, 0, 1)">    jb wrong
</span><span style="color: rgba(0, 128, 128, 1)">173</span>   cmp al,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">9</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">174</span> <span style="color: rgba(0, 0, 0, 1)">    ja wrong
</span><span style="color: rgba(0, 128, 128, 1)">175</span>   
<span style="color: rgba(0, 128, 128, 1)">176</span> <span style="color: rgba(0, 0, 0, 1)">    sub al,30h      ;将al中的ascii码转为数字
</span><span style="color: rgba(0, 128, 128, 1)">177</span> <span style="color: rgba(0, 0, 0, 1)">    xor ah,ah
</span><span style="color: rgba(0, 128, 128, 1)">178</span> <span style="color: rgba(0, 0, 0, 1)">    mul bx            ;乘以所处数位的权值
</span><span style="color: rgba(0, 128, 128, 1)">179</span>   cmp dx,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">      ;判断结果是否超出16位数范围,如超出则报错
</span><span style="color: rgba(0, 128, 128, 1)">180</span> <span style="color: rgba(0, 0, 0, 1)">    jne yichu
</span><span style="color: rgba(0, 128, 128, 1)">181</span>   
<span style="color: rgba(0, 128, 128, 1)">182</span> <span style="color: rgba(0, 0, 0, 1)">    add di,ax      ;将形成的数值叠加放在累加器di中
</span><span style="color: rgba(0, 128, 128, 1)">183</span>      cmp di,<span style="color: rgba(128, 0, 128, 1)">99</span>
<span style="color: rgba(0, 128, 128, 1)">184</span> <span style="color: rgba(0, 0, 0, 1)">    ja yichu      ;超过100报错
</span><span style="color: rgba(0, 128, 128, 1)">185</span>
<span style="color: rgba(0, 128, 128, 1)">186</span> <span style="color: rgba(0, 0, 0, 1)">    mov ax,bx      ;将BX中的数位权值扩大10倍,此处需要借助ax来实现
</span><span style="color: rgba(0, 128, 128, 1)">187</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">188</span> <span style="color: rgba(0, 0, 0, 1)">    mul bx
</span><span style="color: rgba(0, 128, 128, 1)">189</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,ax
</span><span style="color: rgba(0, 128, 128, 1)">190</span>   
<span style="color: rgba(0, 128, 128, 1)">191</span> <span style="color: rgba(0, 0, 0, 1)">    dec si            ;si指针减1,指向前一数位
</span><span style="color: rgba(0, 128, 128, 1)">192</span> <span style="color: rgba(0, 0, 0, 1)">    loop cov      ;按CX中的字符个数计数循环
</span><span style="color: rgba(0, 128, 128, 1)">193</span>   
<span style="color: rgba(0, 128, 128, 1)">194</span> <span style="color: rgba(0, 0, 0, 1)">lastadd:            ;从后往前数的最后一个加数,执行lastadd时loop已经结束
</span><span style="color: rgba(0, 128, 128, 1)">195</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,result
</span><span style="color: rgba(0, 128, 128, 1)">196</span> <span style="color: rgba(0, 0, 0, 1)">    add bx,di      ;存在bx寄存器中带回
</span><span style="color: rgba(0, 128, 128, 1)">197</span> <span style="color: rgba(0, 0, 0, 1)">    mov result,bx    ;备份结果在result中
</span><span style="color: rgba(0, 128, 128, 1)">198</span>   jmp <span style="color: rgba(0, 0, 255, 1)">return</span>      
<span style="color: rgba(0, 128, 128, 1)">199</span> <span style="color: rgba(0, 0, 0, 1)">addi:
</span><span style="color: rgba(0, 128, 128, 1)">200</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,result    ;把当前累加值赋给bx
</span><span style="color: rgba(0, 128, 128, 1)">201</span> <span style="color: rgba(0, 0, 0, 1)">    add bx,di      ;di表示当前某一个加数
</span><span style="color: rgba(0, 128, 128, 1)">202</span>
<span style="color: rgba(0, 128, 128, 1)">203</span> <span style="color: rgba(0, 0, 0, 1)">    cmp bx,result    ;判断是否溢出超过65535
</span><span style="color: rgba(0, 128, 128, 1)">204</span> <span style="color: rgba(0, 0, 0, 1)">    jb yichu
</span><span style="color: rgba(0, 128, 128, 1)">205</span> <span style="color: rgba(0, 0, 0, 1)">    mov result,bx    ;将结果存回result
</span><span style="color: rgba(0, 128, 128, 1)">206</span>   
<span style="color: rgba(0, 128, 128, 1)">207</span> <span style="color: rgba(0, 0, 0, 1)">    xor ax,ax
</span><span style="color: rgba(0, 128, 128, 1)">208</span> <span style="color: rgba(0, 0, 0, 1)">    xor bx,bx
</span><span style="color: rgba(0, 128, 128, 1)">209</span> <span style="color: rgba(0, 0, 0, 1)">    xor di,di      ;累加器清0
</span><span style="color: rgba(0, 128, 128, 1)">210</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">      ;由于下一个加数又从个位数开始算起,因而将所乘权值设为1
</span><span style="color: rgba(0, 128, 128, 1)">211</span>   
<span style="color: rgba(0, 128, 128, 1)">212</span> <span style="color: rgba(0, 0, 0, 1)">    dec si            ;向前移动一格位置
</span><span style="color: rgba(0, 128, 128, 1)">213</span> <span style="color: rgba(0, 0, 0, 1)">    dec cx            ;遇到加号cx相应的减少1
</span><span style="color: rgba(0, 128, 128, 1)">214</span> <span style="color: rgba(0, 0, 0, 1)">    jmp cov      ;结束后跳到cov部分
</span><span style="color: rgba(0, 128, 128, 1)">215</span>         
<span style="color: rgba(0, 128, 128, 1)">216</span> <span style="color: rgba(0, 0, 0, 1)">wrong:            ;输入错误
</span><span style="color: rgba(0, 128, 128, 1)">217</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,err
</span><span style="color: rgba(0, 128, 128, 1)">218</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">219</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">220</span>   mov flag,<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">221</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">222</span>   jmp <span style="color: rgba(0, 0, 255, 1)">return</span>
<span style="color: rgba(0, 128, 128, 1)">223</span>   
<span style="color: rgba(0, 128, 128, 1)">224</span> <span style="color: rgba(0, 0, 0, 1)">yichu:            ;加数超过100
</span><span style="color: rgba(0, 128, 128, 1)">225</span>   mov flag,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">226</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,overout
</span><span style="color: rgba(0, 128, 128, 1)">227</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">228</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">229</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">230</span>   
<span style="color: rgba(0, 128, 128, 1)">231</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">:
</span><span style="color: rgba(0, 128, 128, 1)">232</span> <span style="color: rgba(0, 0, 0, 1)">    ret
</span><span style="color: rgba(0, 128, 128, 1)">233</span> <span style="color: rgba(0, 0, 0, 1)">inputi endp
</span><span style="color: rgba(0, 128, 128, 1)">234</span>   
<span style="color: rgba(0, 128, 128, 1)">235</span>   
<span style="color: rgba(0, 128, 128, 1)">236</span> <span style="color: rgba(0, 0, 0, 1)">input2 proc            ;专用于输入纯数字答案的子程序
</span><span style="color: rgba(0, 128, 128, 1)">237</span>   mov flag,<span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)">238</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,buf      ;从键盘接收输入数值放入buf缓冲区
</span><span style="color: rgba(0, 128, 128, 1)">239</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">240</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">241</span> <span style="color: rgba(0, 0, 0, 1)">    enterline      ;回车换行
</span><span style="color: rgba(0, 128, 128, 1)">242</span>   
<span style="color: rgba(0, 128, 128, 1)">243</span>   mov cl,buf+<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">    ;获取实际键入字符数,置于CX寄存器中
</span><span style="color: rgba(0, 128, 128, 1)">244</span> <span style="color: rgba(0, 0, 0, 1)">    xor ch,ch
</span><span style="color: rgba(0, 128, 128, 1)">245</span> <span style="color: rgba(0, 0, 0, 1)">    xor di,di      ;累加器清0
</span><span style="color: rgba(0, 128, 128, 1)">246</span> <span style="color: rgba(0, 0, 0, 1)">    xor dx,dx      ;DX寄存器清0
</span><span style="color: rgba(0, 128, 128, 1)">247</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">      ;由于从个位数开始算起,因而将所乘权值设为1
</span><span style="color: rgba(0, 128, 128, 1)">248</span>   lea si,buf+<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">    ;将si指向接收到的第1个字符位置
</span><span style="color: rgba(0, 128, 128, 1)">249</span> <span style="color: rgba(0, 0, 0, 1)">    add si,cx      ;因为从个位算起,所以将si指向最后1个接收到的个位数
</span><span style="color: rgba(0, 128, 128, 1)">250</span> <span style="color: rgba(0, 0, 0, 1)">    dec si
</span><span style="color: rgba(0, 128, 128, 1)">251</span>   
<span style="color: rgba(0, 128, 128, 1)">252</span> <span style="color: rgba(0, 0, 0, 1)">cov:mov al,      ;取出个位数给al
</span><span style="color: rgba(0, 128, 128, 1)">253</span>   cmp al,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">0</span><span style="color: rgba(128, 0, 0, 1)">'</span>      ;边界检查:如果输入不是0-<span style="color: rgba(0, 0, 0, 1)">9的数字,就报错
</span><span style="color: rgba(0, 128, 128, 1)">254</span> <span style="color: rgba(0, 0, 0, 1)">    jb wrong2
</span><span style="color: rgba(0, 128, 128, 1)">255</span>   cmp al,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">9</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">256</span> <span style="color: rgba(0, 0, 0, 1)">    ja wrong2
</span><span style="color: rgba(0, 128, 128, 1)">257</span>
<span style="color: rgba(0, 128, 128, 1)">258</span> <span style="color: rgba(0, 0, 0, 1)">    sub al,30h      ;将al中的ascii码转为数字
</span><span style="color: rgba(0, 128, 128, 1)">259</span> <span style="color: rgba(0, 0, 0, 1)">    xor ah,ah
</span><span style="color: rgba(0, 128, 128, 1)">260</span> <span style="color: rgba(0, 0, 0, 1)">    mul bx            ;乘以所处数位的权值
</span><span style="color: rgba(0, 128, 128, 1)">261</span>   cmp dx,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">      ;判断结果是否超出16位数范围,如超出则报错
</span><span style="color: rgba(0, 128, 128, 1)">262</span> <span style="color: rgba(0, 0, 0, 1)">    jne over2
</span><span style="color: rgba(0, 128, 128, 1)">263</span>   
<span style="color: rgba(0, 128, 128, 1)">264</span> <span style="color: rgba(0, 0, 0, 1)">    add di,ax      ;将形成的数值放在累加器di中
</span><span style="color: rgba(0, 128, 128, 1)">265</span> <span style="color: rgba(0, 0, 0, 1)">    jc over2      ;如数值超过16位数范围报错
</span><span style="color: rgba(0, 128, 128, 1)">266</span>         
<span style="color: rgba(0, 128, 128, 1)">267</span> <span style="color: rgba(0, 0, 0, 1)">    mov ax,bx      ;将BX中的数位权值乘以10
</span><span style="color: rgba(0, 128, 128, 1)">268</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">269</span> <span style="color: rgba(0, 0, 0, 1)">    mul bx
</span><span style="color: rgba(0, 128, 128, 1)">270</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,ax
</span><span style="color: rgba(0, 128, 128, 1)">271</span> <span style="color: rgba(0, 0, 0, 1)">    dec si            ;si指针减1,指向前一数位
</span><span style="color: rgba(0, 128, 128, 1)">272</span> <span style="color: rgba(0, 0, 0, 1)">    loop cov      ;按CX中的字符个数计数循环
</span><span style="color: rgba(0, 128, 128, 1)">273</span>   
<span style="color: rgba(0, 128, 128, 1)">274</span> <span style="color: rgba(0, 0, 0, 1)">       mov op1,di      ;将结果储存在op1中
</span><span style="color: rgba(0, 128, 128, 1)">275</span> <span style="color: rgba(0, 0, 0, 1)">    jmp return2
</span><span style="color: rgba(0, 128, 128, 1)">276</span>
<span style="color: rgba(0, 128, 128, 1)">277</span> <span style="color: rgba(0, 0, 0, 1)">wrong2:                ;给出错误提示
</span><span style="color: rgba(0, 128, 128, 1)">278</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,err
</span><span style="color: rgba(0, 128, 128, 1)">279</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">280</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">281</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">282</span>   mov flag,<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">283</span>
<span style="color: rgba(0, 128, 128, 1)">284</span> <span style="color: rgba(0, 0, 0, 1)">    jmp return2
</span><span style="color: rgba(0, 128, 128, 1)">285</span>         
<span style="color: rgba(0, 128, 128, 1)">286</span> <span style="color: rgba(0, 0, 0, 1)">over2:
</span><span style="color: rgba(0, 128, 128, 1)">287</span> <span style="color: rgba(0, 0, 0, 1)">    lea dx,overout
</span><span style="color: rgba(0, 128, 128, 1)">288</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)">289</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">290</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">291</span>   mov flag,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">292</span>   
<span style="color: rgba(0, 128, 128, 1)">293</span> <span style="color: rgba(0, 0, 0, 1)">return2:
</span><span style="color: rgba(0, 128, 128, 1)">294</span> <span style="color: rgba(0, 0, 0, 1)">    ret
</span><span style="color: rgba(0, 128, 128, 1)">295</span> <span style="color: rgba(0, 0, 0, 1)">input2 endp
</span><span style="color: rgba(0, 128, 128, 1)">296</span>
<span style="color: rgba(0, 128, 128, 1)">297</span> <span style="color: rgba(0, 0, 0, 1)">outi proc                ;输出子程序
</span><span style="color: rgba(0, 128, 128, 1)">298</span> <span style="color: rgba(0, 0, 0, 1)">    mov ax,bx            ;待输出的数先存在bx里面,在给ax
</span><span style="color: rgba(0, 128, 128, 1)">299</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">10000</span><span style="color: rgba(0, 0, 0, 1)">      ;初始数位权值为10000
</span><span style="color: rgba(0, 128, 128, 1)">300</span>   mov ff,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">            ;每次都赋初值0
</span><span style="color: rgba(0, 128, 128, 1)">301</span>   
<span style="color: rgba(0, 128, 128, 1)">302</span> <span style="color: rgba(0, 0, 0, 1)">cov1:xor dx,dx            ;将dx:ax中的数值除以权值
</span><span style="color: rgba(0, 128, 128, 1)">303</span> <span style="color: rgba(0, 0, 0, 1)">    div bx
</span><span style="color: rgba(0, 128, 128, 1)">304</span> <span style="color: rgba(0, 0, 0, 1)">    mov cx,dx            ;余数备份到CX寄存器中
</span><span style="color: rgba(0, 128, 128, 1)">305</span>   
<span style="color: rgba(0, 128, 128, 1)">306</span>   cmp ff,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">            ;检测是否曾遇到非0商值
</span><span style="color: rgba(0, 128, 128, 1)">307</span> <span style="color: rgba(0, 0, 0, 1)">    jne nor1            ;如遇到过,则不管商是否为0都输出显示
</span><span style="color: rgba(0, 128, 128, 1)">308</span>   cmp ax,<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">            ;如未遇到过,则检测商是否为0
</span><span style="color: rgba(0, 128, 128, 1)">309</span> <span style="color: rgba(0, 0, 0, 1)">    je cont                ;为0则不输出显示   
</span><span style="color: rgba(0, 128, 128, 1)">310</span> <span style="color: rgba(0, 0, 0, 1)">nor1:
</span><span style="color: rgba(0, 128, 128, 1)">311</span> <span style="color: rgba(0, 0, 0, 1)">    mov dl,al            ;将商转换为ascii码输出显示
</span><span style="color: rgba(0, 128, 128, 1)">312</span> <span style="color: rgba(0, 0, 0, 1)">    add dl,30h
</span><span style="color: rgba(0, 128, 128, 1)">313</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">314</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">315</span>   
<span style="color: rgba(0, 128, 128, 1)">316</span>   mov ff,<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">            ;曾遇到非0商,则将标志置1
</span><span style="color: rgba(0, 128, 128, 1)">317</span> <span style="color: rgba(0, 0, 0, 1)">cont:
</span><span style="color: rgba(0, 128, 128, 1)">318</span>   cmp bx,<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">            ;检测权值是否已经修改到十位了
</span><span style="color: rgba(0, 128, 128, 1)">319</span> <span style="color: rgba(0, 0, 0, 1)">    je outer            ;如果相等,则完成最后的个位数输出显示
</span><span style="color: rgba(0, 128, 128, 1)">320</span>   
<span style="color: rgba(0, 128, 128, 1)">321</span> <span style="color: rgba(0, 0, 0, 1)">    xor dx,dx            ;将数位权值除以10
</span><span style="color: rgba(0, 128, 128, 1)">322</span> <span style="color: rgba(0, 0, 0, 1)">    mov ax,bx
</span><span style="color: rgba(0, 128, 128, 1)">323</span>   mov bx,<span style="color: rgba(128, 0, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">324</span> <span style="color: rgba(0, 0, 0, 1)">    div bx
</span><span style="color: rgba(0, 128, 128, 1)">325</span> <span style="color: rgba(0, 0, 0, 1)">    mov bx,ax
</span><span style="color: rgba(0, 128, 128, 1)">326</span>
<span style="color: rgba(0, 128, 128, 1)">327</span> <span style="color: rgba(0, 0, 0, 1)">    mov ax,cx            ;将备份的余数送入AX
</span><span style="color: rgba(0, 128, 128, 1)">328</span> <span style="color: rgba(0, 0, 0, 1)">    jmp cov1                ;继续循环
</span><span style="color: rgba(0, 128, 128, 1)">329</span> <span style="color: rgba(0, 0, 0, 1)">outer:
</span><span style="color: rgba(0, 128, 128, 1)">330</span> <span style="color: rgba(0, 0, 0, 1)">    mov dl,cl            ;最后的个位数变为ascii码输出显示
</span><span style="color: rgba(0, 128, 128, 1)">331</span> <span style="color: rgba(0, 0, 0, 1)">    add dl,30h
</span><span style="color: rgba(0, 128, 128, 1)">332</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">333</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h   
</span><span style="color: rgba(0, 128, 128, 1)">334</span> <span style="color: rgba(0, 0, 0, 1)">    enterline
</span><span style="color: rgba(0, 128, 128, 1)">335</span> <span style="color: rgba(0, 0, 0, 1)">ret
</span><span style="color: rgba(0, 128, 128, 1)">336</span> <span style="color: rgba(0, 0, 0, 1)">outi endp
</span><span style="color: rgba(0, 128, 128, 1)">337</span>
<span style="color: rgba(0, 128, 128, 1)">338</span> <span style="color: rgba(0, 0, 0, 1)">judge proc
</span><span style="color: rgba(0, 128, 128, 1)">339</span>   mov ah,<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">340</span>   <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> 21h
</span><span style="color: rgba(0, 128, 128, 1)">341</span> <span style="color: rgba(0, 0, 0, 1)">    mov input,al      ;将储存的字符给input
</span><span style="color: rgba(0, 128, 128, 1)">342</span> <span style="color: rgba(0, 0, 0, 1)">ret
</span><span style="color: rgba(0, 128, 128, 1)">343</span> <span style="color: rgba(0, 0, 0, 1)">judge endp
</span><span style="color: rgba(0, 128, 128, 1)">344</span>
<span style="color: rgba(0, 128, 128, 1)">345</span>
<span style="color: rgba(0, 128, 128, 1)">346</span> <span style="color: rgba(0, 0, 0, 1)">CODES ENDS
</span><span style="color: rgba(0, 128, 128, 1)">347</span>   END START</pre>
</div>
<p>&nbsp;</p>
</div>
</div><br><br>
来源:https://www.cnblogs.com/xwh-blogs/p/12716861.html
頁: [1]
查看完整版本: 汇编语言之加法练习程序