彙編第二次實驗

;功能:按要求輸入字符,計算字符中的數字之和,並以十進制和二進制輸出
;做者: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
相關文章
相關標籤/搜索