彙編初學

剛開始學彙編,這是本身作的做業。html

 

;    功能:將一個表達式的值((116*96-18)/2)輸出爲十六進制(能夠拓展爲其它進制)
 ;    做者:KDF5000
 ;    時間:2012.11.2
 ;    待改進:用戶輸入數字,用戶能夠選擇進制輸出
 ;
.386
DATA  SEGMENT USE16
BUF          DW 116,96,18,2
             DB 20 DUP('$')
TS           DB 'H$'
MESSAGE      DB    '(116*96-18)/2=$'
HUANHANG     DB 0DH,0AH,'$'
DATA  ENDS

STACK SEGMENT USE16       STACK
      DB    200 DUP(0)
STACK ENDS

CODE  SEGMENT     USE16
      ASSUME  DS:DATA,CS:CODE,SS;STACK
BEGIN:MOV   AX,DATA
      MOV   DS,AX
      ;計算表達式的值
      MOV   AX,BUF
      MUL   BUF+2
      SUB   AX,BUF+4
      MOV   BX,BUF+6
      DIV   BX

      MOV   CX,16   ;設置除數,能夠拓展爲二進制,十進制,八進制。。。
      MOV   SI,OFFSET TS

L:    DIV   CX
      CMP   DX,9   ;判斷是否是大於9,十六進制時有用
      JA    O
      ADD   DX,30H     ;小於9加30h
      JMP   NEXT
O:    ADD   DX,37H      ;大於9加37H
NEXT: DEC   SI
      MOV   [SI],DL
      MOV   DX,0
      CMP   AX,0
      JNE   L
      ;輸出表達式
      MOV   DX,OFFSET MESSAGE
      MOV   AH,9
      INT   21H
      ;輸出轉換後的數
      MOV   DX,SI
      MOV   AH,9
      INT   21H
      
      MOV   AH,4CH
      INT   21H
CODE  ENDS
      END   BEGIN
相關文章
相關標籤/搜索