主题:[讨论][已解决]【将字符串转换成BCD】很奇怪的现象~~~感兴趣的好心人请进~~LOOP的用法~~
LOOP 返回调用时 LOOP的转移的范围在-128~~+127之间,如果超出了范围,则会出现错误,这个时候可以采用CMP等指令替代即可。嘎嘎,终于解决了!!正确程序在下面!!
题目就是讲一个字符串(0--9)以BCD码的形式输出;
下面我将给出两个程序,两个程序的思路都一样,但是第一个可以通过运行,但是第二个却不能,是不是因为长度太长呢?
第一个程序:
.386
DATA SEGMENT USE16
FUB1 DB '012345678901234567890'
COUNT = $-FUB1
FUB2 DB '0000 ','$'
FUB3 DB '0001 ','$'
FUB4 DB '0010 ','$'
FUB5 DB '0011 ','$'
FUB6 DB '0100 ','$'
FUB7 DB '0101 ','$'
FUB8 DB '0110 ','$'
DATA ENDS
STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,SS:STACK,DS:DATA
BEGIN: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET FUB1
MOV CX,COUNT
L0: MOV BL,[SI]
CMP BL,30H
JNZ L1
MOV DX,OFFSET FUB2
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L1: CMP BL,31H
JNZ L2
MOV DX,OFFSET FUB3
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L2: CMP BL,32H
JNZ L3
MOV DX,OFFSET FUB4
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L3: CMP BL,33H
JNZ L4
MOV DX,OFFSET FUB5
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L4: CMP BL,34H
JNZ L5
MOV DX,OFFSET FUB6
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L5: MOV BL,[SI]
CMP BL,35H
JNZ L6
MOV DX,OFFSET FUB7
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L6: MOV DX,OFFSET FUB8
MOV AH,9
INT 21H
INC SI
LOOP L0
EXIT: MOV DL,42H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
第二个程序:(下面)
题目就是讲一个字符串(0--9)以BCD码的形式输出;
下面我将给出两个程序,两个程序的思路都一样,但是第一个可以通过运行,但是第二个却不能,是不是因为长度太长呢?
第一个程序:
.386
DATA SEGMENT USE16
FUB1 DB '012345678901234567890'
COUNT = $-FUB1
FUB2 DB '0000 ','$'
FUB3 DB '0001 ','$'
FUB4 DB '0010 ','$'
FUB5 DB '0011 ','$'
FUB6 DB '0100 ','$'
FUB7 DB '0101 ','$'
FUB8 DB '0110 ','$'
DATA ENDS
STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,SS:STACK,DS:DATA
BEGIN: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET FUB1
MOV CX,COUNT
L0: MOV BL,[SI]
CMP BL,30H
JNZ L1
MOV DX,OFFSET FUB2
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L1: CMP BL,31H
JNZ L2
MOV DX,OFFSET FUB3
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L2: CMP BL,32H
JNZ L3
MOV DX,OFFSET FUB4
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L3: CMP BL,33H
JNZ L4
MOV DX,OFFSET FUB5
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L4: CMP BL,34H
JNZ L5
MOV DX,OFFSET FUB6
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L5: MOV BL,[SI]
CMP BL,35H
JNZ L6
MOV DX,OFFSET FUB7
MOV AH,9
INT 21H
INC SI
LOOP L0
JMP EXIT
L6: MOV DX,OFFSET FUB8
MOV AH,9
INT 21H
INC SI
LOOP L0
EXIT: MOV DL,42H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
第二个程序:(下面)