51单片机汇编语言程序设计例程 将存储字单元Result的学号

[复制链接]
查看39 | 回复0 | 2021-6-20 02:22:08 | 显示全部楼层 |阅读模式
将存储字单元Result的本人学号(例如:19年级4班学号30即为:19430数字),以不同进制的方式显示在屏幕上。设计显示菜单,通过菜单选择1 HEX进制、2 DEC 十进制、3 BIN二进制,4返回。
  1. DATAS SEGMENT
  2. Result DW 19418D  ;=4BDAH=100 1011 1101 1010B
  3. BUFF DW 10000,1000,100,10,1 ;中间变量
  4. Menu DB'     Menu-Display Format Select(1-4):',0DH,0AH
  5.          DB'  1HEX-Hexadecimal',0DH,0AH  ;4BDAH
  6.          DB'  2DEC-Decimal',0DH,0AH   ;19418
  7.          DB'  3BIN-Binary',0DH,0AH  ;100 1011 1101 1010B
  8.          DB'  4ESC-Exit!',0DH,0AH,'


  9. IN_Err DB 0DH,0AH,'*****INPUT ERROR!*****',0DH,0AH,'


  10. LF   DB 0DH,0AH,'


  11. DATAS ENDS
  12. CSEG SEGMENT
  13.          ASSUME CS:CSEG,DS:DATAS
  14.          
  15. START:
  16.          MOV AX,DATAS
  17.          MOV DS,AX
  18.          LEA DX,Menu
  19.          MOV AH,09H
  20.          INT 21H
  21.          
  22. MAIN:
  23.          MOV AH,01H
  24.          INT 21H
  25.          CALL CRLF
  26.          CMP AL,31H
  27.          JE NEXT1
  28.          CMP AL,32H
  29.          JE NEXT2
  30.           CMP AL,33H
  31.          JE NEXT3
  32.          CMP AL,34H
  33.          JE NEXT4
  34.          JMP NEXT5
  35.          
  36. NEXT1:
  37.           LEA SI,Result
  38.           MOV BX,[SI]
  39.           CALL HEX
  40.           CALL CRLF
  41.           JMP MAIN
  42. NEXT2:
  43.           MOV CX,5
  44.           MOV AX,Result
  45.           MOV SI,OFFSET BUFF
  46. NEXT: XOR DX,DX
  47.           DIV WORD PTR[SI]
  48.       PUSH DX
  49.           OR AL,30H
  50.           MOV DL,AL
  51.           MOV AH,02H
  52.           INT 21H
  53.           INC SI
  54.           INC SI
  55.           POP AX
  56.           LOOP NEXT
  57.           CALL CRLF
  58.           JMP MAIN
  59.          
  60. NEXT3:
  61.       LEA SI,Result
  62.           MOV AX,[SI]
  63.           CALL BIN
  64.           CALL CRLF
  65.           JMP MAIN
  66.          
  67. NEXT4:
  68.       CALL EX
  69.           JMP MAIN
  70.          
  71. NEXT5:
  72.       CALL INTERROR
  73.           JMP MAIN
  74.       
  75. BIN proc  near
  76.         PUSH BX
  77.         PUSH CX
  78.         PUSH DX
  79.         MOV BX,AX
  80.         MOV CX,16
  81. S:  MOV DX,30H
  82.         SHL BX,1
  83.         ADC DX,0
  84.         MOV AH,2
  85.         INT 21H
  86.         LOOP S
  87.         POP DX
  88.         POP CX
  89.         POP BX
  90.         RET
  91. BIN endp
  92. HEX proc near
  93.         MOV CH,04D
  94.   ROTATE:
  95.     MOV CL,04D
  96.     ROL BX,CL        
  97.     MOV AL,BL
  98.     AND AL,0FH     
  99.     ADD AL,30H     
  100.     CMP AL,'9'
  101.     JBE  PRINTF      
  102.     ADD AL,07H   
  103.    
  104.   PRINTF:
  105.     MOV DL,AL     
  106.     MOV AH,2
  107.     INT 21H
  108.     DEC CH
  109.     JNE ROTATE  
  110.     RET
  111. HEX endp
  112.          
  113. INTERROR proc near
  114.           LEA DX,IN_Err
  115.           MOV AH,09H
  116.           INT 21H
  117.           RET
  118. INTERROR endp
  119. CRLF proc near
  120.          LEA DX,LF
  121.          MOV AH,09H
  122.          INT 21H
  123.          RET
  124. CRLF endp
  125. EX proc near
  126.          MOV AH,4CH
  127.          INT 21H
  128.          RET
  129. EX endp
  130. CSEG ENDS
  131.       END START
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则