循环程序设计【微机原理与汇编语言】<针对大学8086处理器>1+2+3+4+...+n=result

实验要求:键入一个十进制数得出1加到次数的结果

                  即键入10则得出1+2+3+...+10=result的result值

实验思路:分为三部分

                (1)第一部分:将键入的值转换为二进制<方法见我上篇发布文章>

                (2)第二部分:实现加法运算,通过循环实现

                (3)第三部分:将结果(二进制)转换为10进制输出<方法见我上篇发布文章>

实验代码:

.model small
.stack
.data
      INF1 db "Please input a number (0-65535):$"
      IBUF db 6
           db 0
           db dup(0)
      OBUF db 11 dup(0)
.code  
;十进制转二进制从高位开始处理
;二进制转十进制从地位开始处理
START: MOV ax,@data
       MOV ds,ax
       ;输出字符串INF1
       MOV dx,offset INF1
       MOV ah,9
       INT 21h
       ;向缓冲区IBUF中输入字符串
       MOV dx,offset IBUF
       MOV ah,10
       INT 21h
       ;指定循环次数
       MOV cl,IBUF+1 ;传值
       MOV ch,0
       ;SI指向第一个字符
       MOV si,offset IBUF+2 ;传址
       MOV ax,0      ;用于记录二进制结果值
AGAIN: MOV dx,10
       MUL dx        ;将上个结果扩大10倍
       ;处理输入字符将其转化为二进制并且加入ax中 
       AND byte ptr [si],0fh 
       ADD al,[si]
       ADC ah,0                  ;al进位加入ah
       INC si
       LOOP AGAIN
       
       ;实现从1加到ax中存入的值
       MOV cx,ax    
       MOV ax,0
       MOV bx,1
LOOP2: ADD ax,bx
       INC bx
       LOOP LOOP2
       
      MOV bx,offset OBUF+9    ;将bx作为指针指向缓冲区尾部用于存放地位
      MOV byte ptr [bx],'$'   ;用于结束十进制字符       
      MOV cx,10               ;做除10运算
LOOP1:MOV dx,0                ;被除数高位置0
      DIV cx                  ;相当于ax除以10
      ADD dl,30h              ;dx中存储是余数(地位),形成余数对应的ASCII码
      DEC bx                  ;指针移动存储这位十进制字符数据
      MOV [bx],dl             
      OR ax,ax                ;判断ax是否为0,商是否为0就可以知道是否已经处理完数据
      JNZ LOOP1
      
      
      ;输出换行和回车
      MOV dl,0ah
      MOV ah,2
      INT 21h
      MOV dl,0dh
      MOV ah,2
      INT 21h
      ;输出字符串,调用十号功能调用
      MOV dx,bx               ;dx指向数据最高位
      MOV ah,9
      INT 21h  
      
      MOV ah,4ch
      INT 21h
      END START
       

实验结果:

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粒粒米z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值