汇编语言一个程序

来源:百度知道 编辑:UC知道 时间:2024/05/29 02:24:03
NAME EX1
PAGE 50,70

DATAS SEGMENT PARA 'DAT'
A1 DB 12H,34H,56H,78H,9AH
DB 0BCH,0DEH,0F0H
B1=$-A1
B2=B1*2
A2 DB B2 DUP(?)
DAT ENDS

STAC SEGMENT PARA STACK 'STA'
STA1 DW 100 DUP(?)
STAC ENDS

CODE SEGMENT PARA'CODE'
ASSUME CS:CODE,DS:DAT
ASSUME SS:STAC,ES:DAT
STAR PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DAT
MOV DS,AX
MOV ES,AX
LEA SI,A1
LEA DI,A2
MOV CX,B1
G1: MOV BL,2
MOV AL,[SI]
MOV BH,AL
PUSH CX
MOV CL,4
ROR AL,CL
POP CX
G2: AND AL,0FH
DAA
ADD AL,0F0H
ADC AL,40H
MOV [DI],AL
INC DI
MOV AL,BH
DEC BL
JNZ G2
INC SI
LOOP G1
MOV SI OFFSET A2
MOV CX,B2
CALL P1
RET
P1 PROC
MOV BL,2
G:

运行结果为12 34 56 78 9A BC DE F0
程序修改如下:
NAME EX1
PAGE 50,70

DAT SEGMENT PARA 'DAT'
A1 DB 12H,34H,56H,78H,9AH
DB 0BCH,0DEH,0F0H
B1=$-A1
B2=B1*2
A2 DB B2 DUP(?)
DAT ENDS

STAC SEGMENT PARA STACK 'STA'
STA1 DW 100 DUP(?)
STAC ENDS

CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DAT
ASSUME SS:STAC,ES:DAT
STAR PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DAT
MOV DS,AX
MOV ES,AX
LEA SI,A1
LEA DI,A2
MOV CX,B1
G1: MOV BL,2
MOV AL,[SI]
MOV BH,AL
PUSH CX
MOV CL,4
ROR AL,CL
POP CX
G2: AND AL,0FH
DAA
ADD AL,0F0H
ADC AL,40H
MOV [DI],AL
INC DI
MOV AL,BH
DEC BL
JNZ G2
INC SI
LOOP G1
MOV SI,OFFSET A2
MOV CX,B2
CALL P1
MOV AH,1
INT 21H
RET
STAR ENDP

你用emu8086软件,在调试程