汇编第二次实验

;功能:按要求输入字符,计算字符中的数字之和,并以十进制和二进制输出
;作者:KDF5000
;时间:2012.11.2

.386
DATA  SEGMENT     USE16
      BUF         DB     80
                  DB     ?
                  DB     80 DUP(0)
      CRLF        DB    0DH,0AH,'$'
                  DB          30 DUP('$')
      BUF1        DB  '$'
      TEST        EQU   58
      LOP1        DB   1
      LOP2        DB   0
      STRING1     DB  '请输入字符串(第2,3个和6,7位必须为数字,我们将会计算着四个数字的和):$'
      STRING2     DB  '四个数字的和为:$'
      STRING3     DB   '转化为二进制数为:$'
DATA ENDS
STACK SEGMENT     USE16
      DB    200 DUP(0)
STACK ENDS
CODE  SEGMENT     USE16
      ASSUME      CS:CODE,DS:DATA,SS:STACK
START:MOV   AX,DATA
      MOV   DS,AX
      ;提示输入字符串
      LEA   DX,STRING1
      MOV   AH,9
      INT   21H
      ;输出回车换行
      LEA   DX,CRLF
      MOV   AH,9
      INT   21H
      ;开始输入
      LEA   DX,BUF
      MOV   AH,10
      INT   21H
      ;在字符串最后输入$
      MOV   BL,BUF+1
      MOV   BH,0
      MOV   BYTE PTR BUF+2[BX],'$'
      ;输出输入的字符串
      ;LEA   DX,BUF+2
      ; MOV   AH,9
      ;INT   21H
      ;输出换行
      LEA   DX,CRLF
      MOV   AH,9
      INT   21H
      ;输出数字的和提示
      LEA   DX,STRING2
      MOV   AH,9
      INT   21H
      ;将BX寄存器低位置0
      MOV   BL,0
      ;取出我们想要相加的四位数字,并累加到bl
      MOV   DL,BUF+3
      SUB   DL,30H
      ADD   BL,DL

      MOV   DL,BUF+4
      SUB   DL,30H
      ADD   BL,DL


      MOV   DL,BUF+7
      SUB   DL,30H
      ADD   BL,DL

      MOV   DL,BUF+8
      SUB   DL,30H
      ADD   BL,DL

      ;利用取余输出每一位
      MOV   CL,10   ;设置除数
      MOV   BH,0
      MOV   AX,BX
      MOV   BP,OFFSET BUF1

LOOP: DIV   CL
      DEC   BP
      ADD   AH,30H
      MOV   [BP],AH
      CBW
      CMP   AX,0
      JNE   LOOP ;尝试着用JE DISP但是却输出错误,很奇怪???
      ;输出之和
DISP: MOV   DX,BP
      MOV   AH,9
      INT   21H
;尝试输出二进制
      ;输出回车换行
      LEA   DX,CRLF
      MOV   AH,9
      INT   21H
      ;输出二进制输出提示
      LEA   DX,STRING3
      MOV   AH,9
      INT   21H
     ;将计算结果付给cx
      MOV   CX,BX
BIN:
      ;内循环
MOVE: SHL   CX,1
      INC   LOP2
      MOV   AH,LOP1
      MOV   AL,LOP2
      CMP   AH,AL
      JNE   MOVE
      ;外循环
      ADD   CH,30H
      MOV   DL,CH
      MOV   AH,2
      INT   21H
      MOV   CH,0
      INC   LOP1
      CMP   LOP1,9
      JNE   BIN

      MOV   AH,4CH
      INT   21H
CODE  ENDS
      END   START

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值