我学汇编--计数器的例子

学完了C。烦人的汇编悄悄来到,超多的指令,繁琐的代码,呜呜~~~~
但是又不能不学,所以这里比出来一个计算字符数的程序,大家一起学习.
希望那位老兄能够比点意见,能够学好点汇编啦,谢谢!!!
 DATASG SEGMENT
 CHARLIST LABEL BYTE
 MAX DB 80
 ACT DB ?
 CHAR DB 80 DUP(?)
 LETTER DW 0
 DIGIT DW 0
 OTHER DW 0
 ENTER1 DB 'Please enter charlist:','$'
 RESULT DB 'Count Result:','$'
 RESULT1 DB 'letter:','$'
 RESULT2 DB 'digit:','$'
 RESULT3 DB 'other:','$'

 DATASG ENDS
 CODESG SEGMENT
 MAIN PROC FAR
 ASSUME CS:CODESG,DS:DATASG
 START:
 PUSH DS
 SUB AX,AX
 PUSH AX
 MOV AX,DATASG
 MOV DS,AX
 MOV LETTER,0
 MOV DIGIT,0
 MOV OTHER,0
 MOV CX,0

 LEA DX,ENTER1
 MOV AH,09
 INT 21H
 LEA DX,CHARLIST
 MOV AH,0AH
 INT 21H
 CALL CRLF
 LEA SI,CHAR
 MOV CL,[SI-1]

 COMPARE:
 MOV AL,[SI]
 CBW
 CMP AX,2FH
 JLE OTH
 CMP AX,39H
 JLE DIGI
 CMP AX,40H
 JLE OTH
 CMP AX,5AH
 JLE LET
 CMP AX,60H
 JLE OTH
 CMP AX,7AH
 JLE LET
 JMP OTH

 LET:
 INC LETTER
 JMP CHANGE
 OTH:
 INC OTHER
 JMP CHANGE
 DIGI:
 INC DIGIT

 CHANGE:
 INC SI
 LOOP COMPARE
 LEA DX,RESULT
 MOV AH,09H
 INT 21H
 CALL CRLF
 LEA DX,RESULT1
 MOV AH,09H
 INT 21H
 MOV BX,LETTER
 CALL BINIHEX
 CALL CRLF
 LEA DX,RESULT2
 MOV AH,09H
 INT 21H
 MOV BX,DIGIT
 CALL BINIHEX
 CALL CRLF

 LEA DX,RESULT3
 MOV AH,09H
 INT 21H
 MOV BX,OTHER
 CALL BINIHEX
 CALL CRLF
 RET
 MAIN ENDP
 CRLF PROC NEAR
 MOV DL,0DH
 MOV AH,2
 INT 21H
 MOV DL,0AH
 INT 21H
 RET
 CRLF ENDP

 BINIHEX PROC NEAR
 MOV CH,4
 ROTATE:
 MOV CL,4
 ROL BX,CL
 MOV AL,BL
 AND AL,0FH
 ADD AL,30H
 CMP AL,3AH
 JL PRINTIT
 ADD AL,7H
 PRINTIT:
 MOV DL,AL
 MOV AH,02
 INT 21H
 DEC CH
 JNZ ROTATE
 MOV DL,48H
 INT 21H
 RET
 BINIHEX ENDP

 CODESG ENDS
 END START
用C++或者C可以简单实现的一个计数程序要写成这样?你还说不繁啊?
不过最近花了两天时间把成本书看了遍。发觉原来真的想积木一样,简单。呵呵  

       无非就是各类的寄存器存来存去,但是如果真是要做到结构清晰,思路正确,还有待下更多的功夫.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值