初学汇编之第一个程序

Code:
  1. MLENGTH=128   
  2. ;   
  3. DSEG SEGMENT   
  4. BUFF    DB  MLENGTH   
  5.     DB  ?   
  6.     DB  MLENGTH     DUP (?)   
  7. MESS0   DB  'Please input: $'  
  8. MESS1   DB  'Length = $'  
  9. MESS2   DB  'X = $'  
  10. MESS3   DB  'Y = $'    
  11. DSEG ENDS   
  12. ;   
  13. CSEG SEGMENT   
  14.     assume  cs:CSEG, ds:DSEG   
  15. START:  MOV AX,DSEG   
  16.     MOV DS,AX   
  17.     MOV DX,OFFSET   MESS0   
  18.     CALL    DISPMESS   
  19.     MOV DX,OFFSET   BUFF   
  20.     MOV AH,10   
  21.     INT 21H   
  22.     CALL    NEWLINE   
  23.     MOV BH,0   
  24.     MOV BL,0   
  25.     MOV CL,BUFF+1   
  26.     MOV CH,0   
  27.     JCXZ    COK   
  28.     MOV SI,OFFSET   BUFF+2   
  29. AGAIN:  MOV AL,[SI]   
  30.     INC SI   
  31.     CMP AL,'0'  
  32.     JB  NEXT   
  33.     CMP AL,'9'  
  34.     JA  NODEC   
  35.     INC BH   
  36.     JMP SHORT   NEXT   
  37. NODEC:  OR  AL,20H   
  38.     CMP AL,'a'  
  39.     JB  NEXT   
  40.     CMP AL,'z'  
  41.     JA  NEXT   
  42.     INC BL   
  43. NEXT:   LOOP    AGAIN   
  44. ;   
  45. COK:    MOV DX,OFFSET   MESS1   
  46.     CALL    DISPMESS   
  47.     MOV AL,BUFF+1   
  48.     XOR AH,AH   
  49.     CALL    DISPAL   
  50.     CALL    NEWLINE   
  51.     ;   
  52.     MOV DX,OFFSET   MESS2   
  53.     CALL    DISPMESS   
  54.     MOV AL,BH   
  55.     XOR AH,AH   
  56.     CALL    DISPAL   
  57.     CALL    NEWLINE   
  58.     ;   
  59.     MOV DX,OFFSET   MESS3   
  60.     CALL    DISPMESS   
  61.     MOV AL,BL   
  62.     XOR AH,AH   
  63.     CALL    DISPAL   
  64.     CALL    NEWLINE   
  65.     ;   
  66.     MOV AX,4C00H   
  67.     INT 21H   
  68. ;   
  69. DISPAL  PROC   
  70.     MOV CX,3   
  71.     MOV DL,1010B   
  72. DISP1:  DIV DL   
  73.     XCHG    AH,AL   
  74.     ADD AL,'0'  
  75.     PUSH    AX   
  76.     XCHG    AH,AL   
  77.     MOV AH,0   
  78.     LOOP    DISP1   
  79.     MOV CX,3   
  80. DISP2:  POP DX   
  81.     CALL    ECHOCH   
  82.     LOOP    DISP2   
  83.     RET   
  84. DISPAL  ENDP   
  85. ;   
  86. DISPMESS    PROC   
  87.     MOV AH,9   
  88.     INT 21H   
  89.     RET   
  90. DISPMESS    ENDP   
  91. ;   
  92. ECHOCH      PROC   
  93.     MOV AH,2   
  94.     INT 21H   
  95.     RET   
  96. ECHOCH  ENDP   
  97. ;   
  98. NEWLINE PROC   
  99.     PUSH    AX   
  100.     PUSH    DX   
  101.     MOV DL,0DH   
  102.     MOV AH,2   
  103.     INT 21H   
  104.     MOV DL,0AH   
  105.     MOV AH,2   
  106.     INT 21H   
  107.     POP DX   
  108.     POP AX   
  109.     RET   
  110. NEWLINE ENDP   
  111. CSEG    ENDS   
  112.     END START  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值