汇编初学

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

 

 ;    功能:将一个表达式的值((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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值