【汇编】将ASCII码表示的十进制数转换成二进制数

程序要求

流程图

汇编代码

STACK1  ENDS 
DATA    SEGMENT 
    BUF     DB    30H,30H,30H,31H,32H
DATA    ENDS 
CODE SEGMENT 
    ASSUME CS:CODE,DS:DATA   
START:  MOV  AX,DATA 
          MOV  DS,AX 
         MOV  SI,OFFSET BUF  ;把BUF的偏移地址存到SI中去
         MOV  BX,000AH 
         MOV  CX,0004H    ;  cx作为循环控制计数器
        MOV  AH,00H 
        MOV  AL,[SI] 
        SUB  AL,30H 
A1:   IMUL BX 
        ADD  AL,[SI+01] 
        SUB  AL,30H 
        INC  SI 
        LOOP A1     
        MOV [SI],AX
        CALL SHOW  ;调用子程序
        MOV  AX,4C00H 
        INT  21H    
SHOW   PROC NEAR     ; 输出到屏幕,用16进制表示
        MOV  AL,DS:[SI]
        AND  AL,0F0H                 
        MOV  CL,4
        SHR  AL,CL 
        CMP  AL,0AH                  
        JB   C2        
        ADD  AL,07H    
C2:   ADD  AL,30H    
        MOV  DL,AL                   
        MOV  AH,02H 
        INT  21H 
        MOV  AL,DS:[SI] 
        AND  AL,0FH                  
       CMP  AL,0AH 
       JB   C3 
       ADD  AL,07H
C3:    ADD  AL,30H 
        MOV  DL,AL                   
        MOV  AH,02H 
        INT  21H 
             RET          
 SHOW  ENDP  
CODE ENDS 
     END START

相关知识:

LOOP指令 1.CX=CX-1 2.判断cx中的值,不为0,执行标号程序 A1, 为0,向下执行 (即执行 MOV [SI],AX)

DEBUG分析

1.程序运行到 MOV [SI],AX 的时候,已经完成循环,这个指令是把AX的内容存到SI对应的内存单元中,由SI的值可以知道已经循环了4次


2.观察内存中内容的变化
-D 查看内存数据
-T 单步执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,425评论 8 114
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,455评论 0 1
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 8,160评论 1 10
  • 看到这本书的书名和封面时候,我本以为是一本很深沉的书,等我翻来书后才知道这本书写的是一个励志的青春爱情故事。 这本...
    思思_21cc阅读 793评论 3 1
  • 师旷,字子野,山西洪洞人,晋国大夫,是春秋时期富有传奇色彩的著名乐师。师旷博学多才,精通音乐,尤善弹琴。据传,著名...
    势动九天阅读 2,404评论 1 16