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