找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1922|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:939472 发表于 2021-6-17 18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将存储字单元Result的本人学号(例如:19年级4班学号30即为:19430数字),以不同进制的方式显示在屏幕上。设计显示菜单,通过菜单选择1 HEX进制、2 DEC 十进制、3 BIN二进制,4返回。

DATAS SEGMENT
Result DW 19418D  ;=4BDAH=100 1011 1101 1010B
BUFF DW 10000,1000,100,10,1 ;中间变量
Menu DB'     Menu-Display Format Select(1-4):',0DH,0AH
         DB'  1HEX-Hexadecimal',0DH,0AH  ;4BDAH
         DB'  2DEC-Decimal',0DH,0AH   ;19418
         DB'  3BIN-Binary',0DH,0AH  ;100 1011 1101 1010B
         DB'  4ESC-Exit!',0DH,0AH,'$'
IN_Err DB 0DH,0AH,'*****INPUT ERROR!*****',0DH,0AH,'$'
LF   DB 0DH,0AH,'$'
DATAS ENDS
CSEG SEGMENT
         ASSUME CS:CSEG,DS:DATAS
         
START:
         MOV AX,DATAS
         MOV DS,AX
         LEA DX,Menu
         MOV AH,09H
         INT 21H
         
MAIN:
         MOV AH,01H
         INT 21H
         CALL CRLF
         CMP AL,31H
         JE NEXT1
         CMP AL,32H
         JE NEXT2
          CMP AL,33H
         JE NEXT3
         CMP AL,34H
         JE NEXT4
         JMP NEXT5
         
NEXT1:
          LEA SI,Result
          MOV BX,[SI]
          CALL HEX
          CALL CRLF
          JMP MAIN
NEXT2:
          MOV CX,5
          MOV AX,Result
          MOV SI,OFFSET BUFF
NEXT: XOR DX,DX
          DIV WORD PTR[SI]
      PUSH DX
          OR AL,30H
          MOV DL,AL
          MOV AH,02H
          INT 21H
          INC SI
          INC SI
          POP AX
          LOOP NEXT
          CALL CRLF
          JMP MAIN
         
NEXT3:
      LEA SI,Result
          MOV AX,[SI]
          CALL BIN
          CALL CRLF
          JMP MAIN
         
NEXT4:
      CALL EX
          JMP MAIN
         
NEXT5:
      CALL INTERROR
          JMP MAIN
      
BIN proc  near
        PUSH BX
        PUSH CX
        PUSH DX
        MOV BX,AX
        MOV CX,16
S:  MOV DX,30H
        SHL BX,1
        ADC DX,0
        MOV AH,2
        INT 21H
        LOOP S
        POP DX
        POP CX
        POP BX
        RET
BIN endp
HEX proc near
        MOV CH,04D
  ROTATE:
    MOV CL,04D
    ROL BX,CL        
    MOV AL,BL
    AND AL,0FH     
    ADD AL,30H     
    CMP AL,'9'
    JBE  PRINTF      
    ADD AL,07H   
   
  PRINTF:
    MOV DL,AL     
    MOV AH,2
    INT 21H
    DEC CH
    JNE ROTATE  
    RET
HEX endp
         
INTERROR proc near
          LEA DX,IN_Err
          MOV AH,09H
          INT 21H
          RET
INTERROR endp
CRLF proc near
         LEA DX,LF
         MOV AH,09H
         INT 21H
         RET
CRLF endp
EX proc near
         MOV AH,4CH
         INT 21H
         RET
EX endp
CSEG ENDS
      END START
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表