zoukankan      html  css  js  c++  java
  • 汇编编程一点点提高2

       编一个程序,要求把NUM单元存放的一个8位二进制数,在屏幕上显示成16进制数。

    DATAS SEGMENT
        ;此处输入数据段代码
    NUM db 11001100b ;dch
    mess db 'B converted to h:$'  
    DATAS ENDS
    
    STACKS SEGMENT
        ;此处输入堆栈段代码
    STACKS ENDS
    
    CODES SEGMENT
        ASSUME CS:CODES,DS:DATAS,SS:STACKS
    START:
        MOV AX,DATAS
        MOV DS,AX
        ;此处输入代码段代码
        mov ah,9
        mov dx,seg mess
        mov ds,dx
        mov dx,offset mess
        int 21h
        
        mov bl,NUM;将NUM装入BL
        mov ch,2;控制循环次数
    again:
        mov cl,4
        rol bl,cl;循环左移将二进制数的高四位移到低四位
        mov dl,bl;保护二进制数
        and dl,0fh;转换为ASCII码
        add dl,30h;判断是否是大于9的ascii码
        cmp dl,3ah;转换为字母
        jb show
        add dl,7h
    show:           ;显示
        mov ah,2
        int 21h    
        dec ch
        jnz again
        
        mov dl,48h
        mov ah,2
        int 21h
        
        MOV AH,4CH
        INT 21H
    CODES ENDS
        END START

    这个程序的重点有两个:1,将二进制数循环左移四位转换为一位十六进制;

    2.十六进制输出问题,判断是否大于3ah,大于的话加7转换为字母;

    还需要注意的是:调用DOS的2号功能是单个字符显示,9号功能是字符串显示

  • 相关阅读:
    css3skew
    github如何使用
    互联网历史
    html知识点
    人类的终极目标是什么?
    如何提高自我学习能力?
    为什么富人越富,穷人越穷?
    关于游戏小说与学习知识的不同
    关于写代码的一点体会
    监听多行文本框字数输入
  • 原文地址:https://www.cnblogs.com/mm-happy/p/3750156.html
Copyright © 2011-2022 走看看