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

程序要求

【汇编】将ASCII码表示的十进制数转换成二进制数_第1张图片

流程图

【汇编】将ASCII码表示的十进制数转换成二进制数_第2张图片

汇编代码

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次

【汇编】将ASCII码表示的十进制数转换成二进制数_第3张图片

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

【汇编】将ASCII码表示的十进制数转换成二进制数_第4张图片

你可能感兴趣的:(【汇编】将ASCII码表示的十进制数转换成二进制数)