【汇编】从键盘输入一个长度不超过30的十进制数字串,计算数字串中各数据字和,并以十进制形式输出。

要求

提示:用A号功能调用输入数字串。

例如:
输入:12459703 经计算,1+2+4+5+9+7+0+3=31
输出:31

代码

data segment

  str db 30,?,30 dup(?)

data ends



code segment

 assume ds:data,cs:code

  main proc far

start:

  mov ax,data

  mov ds,ax



  mov cx,0



  mov si,1   ;数据段第一个字节是实际输入字符个数



  lea dx,str

  mov ah,0ah  ;A号功能调用

  int 21h



  mov cl,str[si]  ;个数放在cx中

  mov bx,0

accum:

  inc si  ;si每次加1

  mov dl,str[si]

  mov dh,0

  sub dl,30h  ;从字符转为数字

  add bx,dx  

  loop accum



  mov dl,0ah    ;换行

  mov ah,02h

  int 21h



  ;mov cx,0

  ;输入一些东西

push_sth:

  inc cx

  mov dl,10

  mov ax,bx

  div dl     ;商在al里,余数在ah里



  mov dl,ah

  mov dh,0

  push dx

  mov ah,0



  mov bx,ax



  cmp al,0

  jnz push_sth



pop_sth:

  pop dx

  mov dh,0

  add dl,30h

  mov ah,02h

  int 21h

  loop pop_sth

  

  mov ax,4c00h

  int 21h

main endp

code ends

end start
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值