汇编第二次实验

;功能:按要求输入字符,计算字符中的数字之和,并以十进制和二进制输出
;作者: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值