欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AX寄存器中存放着16位二进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现

程序员文章站 2022-03-10 09:47:55
...

【微机原理】—汇编题

AX寄存器中存放着16位二进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现。

方法一

DATA  SEGMENT
  PLUS  DB  4 DUP(?)
DATA  ENDS
STACK1 SEGMENT PARA STACK
       DW 20H DUP(0)
STACK1 ENDS
CODE  SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK1
  START:MOV BX,DATA
        MOV DS,BX
        LEA DI,PLUS
        XOR AX,AX
        CALL BINASC
        MOV AH,4CH
        INT 21H
    BINASC PROC
        MOV CX,4
    LOP:PUSH,CX
        MOV CL,4
        ROL AX,CL
        POP CX
        MOV DL,AL
        AND DL,1111B
        ADD DL,30H
        MOV [DI],DL
        INC DI
        LOOP LOP
        RET
      BINASC ENDP
     CODE ENDS
       END START
        
        

方法二

DATA  SEGMENT
 PLUS DB 4 DUP(?)
DATA  ENDS
CODE SEGMENT
 ASSUME CS:CODE,DS:DATA
 START:MOV BX,DATA
       MOV DS,BX
       LEA SI,PLUS
       MOV BL,AL
       AND BL,0FH
       CALL ASCII
       SHR BL,4
       AND BL,0FH
       CALL ASCII
       MOV AL,AH
       MOV BL,AL
       AND BL,0FH
       CALL ASCII
       SHR BL,4
       AND BL,0FH
       CALL ASCII
       MOV AL,AH
       MOV AH,4CH
       INT 21H
  ASCII PROC
       MOV [SI],BL
       ADD [SI],30H
       INC SI
       RET
   ASCII ENDP
  CODE ENDS
     END START