剛開始學彙編,這是本身作的做業。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