刚开始学汇编,这是本身作的做业。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