. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于汇编程序的一个提问。主要是五位数相加还有十进制进位的问题。  [已解决] 回复[ 2次 ]   点击[ 306次 ]  
lanfioncc
[帖 主]   [ 发表时间:2010-11-26 13:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-26 13:02
在dos系统下,应用汇编语言写:十进制数“12345+67890=?????”的一个程序。当然不能先把十进制数转换为十六进制数然后再写程序。
DATA  SEGMENT
        X  DB '12345+67890=?????$'
DATA  ENDS

CODE  SEGMENT 
       ASSUME CS:CODE,DS:DATA
START:      
             MOV   AX,DATA 
             MOV   DS,AX

             MOV   AL,[X+4]
             ADC    AL,[X+10]
                       DAA
             SUB   AL,30H
             MOV   [X+16],AL  ;al=35H

             MOV   AL,[X+3]
             ADC    AL,[X+9]
                       AAA
             SUB   AL,30H
             MOV   [X+15],AL
             MOV  BL,AL
             MOV  CL,4
             SHR  AL,CL
             ADD AL,30H
             MOV  DL,AL
             MOV   AL,BL
             AND   AL,0FH
             ADD  AL,30H
             MOV  DL,AL
             
             MOV   AL,[X+2]
             ADC    AL,[X+8]
                       AAA
             SUB   AL,30H
             MOV  BL,AL
             MOV  CL,4
             SHR  AL,CL
             ADD AL,30H
             MOV  DL,AL
             MOV   AL,BL
             AND   AL,0FH
             ADD  AL,30H
             MOV  DL,AL


             MOV   [X+14],AL
             MOV   AL,[X+1]
             ADC    AL,[X+7]
                       AAA
             SUB   AL,30H
             MOV  BL,AL
             MOV  CL,4
             SHR  AL,CL
             ADD AL,30H
             MOV  DL,AL
             MOV   AL,BL
             AND   AL,0FH
             ADD  AL,30H
             MOV  DL,AL


             MOV   [X+13],AL
             MOV   AL,[X]
             ADC   AL,[X+6]
                       DAA
             SUB   AL,30H
             
             MOV   [X+12],AL
             MOV   DX,OFFSET X
             MOV   AH,9
             INT     21H
             MOV  AH,4CH
             INT   21H
CODE  ENDS
       END START
 
这个程序计算出来的结果没有进位,不知道是哪里出错了???
因为不会循环,所以写得很粗糙而且还出错了。
汗~~~~~~~~~~~~
masmaster
[第1楼]   [ 回复时间:2010-11-26 15:51 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
个人练习,仅供参考
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=32262&kindLevel=1&kindId=47796&postId=49334&readSg=1
lanfioncc
[第2楼]   [ 回复时间:2011-01-01 20:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-26 13:02
此贴由 贴主 于 [ 2011-01-01 20:07 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(masmaster):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved