汇编初学

来源:互联网 发布:拳师七号健康淘宝店 编辑:程序博客网 时间:2024/05/16 14:42

刚开始学汇编,这是自己做的作业。

 

 ;    功能:将一个表达式的值((116*96-18)/2)输出为十六进制(可以拓展为其它进制) ;    作者:KDF5000 ;    时间:2012.11.2 ;    待改进:用户输入数字,用户可以选择进制输出 ;.386DATA  SEGMENT USE16BUF          DW 116,96,18,2             DB 20 DUP('$')TS           DB 'H$'MESSAGE      DB    '(116*96-18)/2=$'HUANHANG     DB 0DH,0AH,'$'DATA  ENDSSTACK SEGMENT USE16       STACK      DB    200 DUP(0)STACK ENDSCODE  SEGMENT     USE16      ASSUME  DS:DATA,CS:CODE,SS;STACKBEGIN: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 TSL:    DIV   CX      CMP   DX,9   ;判断是不是大于9,十六进制时有用      JA    O      ADD   DX,30H     ;小于9加30h      JMP   NEXTO:    ADD   DX,37H      ;大于9加37HNEXT: 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   21HCODE  ENDS      END   BEGIN