data segment
org 2000h
str1 db 'Aedc123!*sdeDIO71$'
count equ $-str1
org 2018h
str2 db count dup(?)
data ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: mov ax,data
MOV DS,AX
lea si,str1
lea di,str2
mov cx,count
l0:mov al,61H
cmp ds:[si],al
jl l1
mov al,7aH
cmp al,ds:[si]
jl l1
mov al,ds:[si]
sub al,20h
mov ds:[di],al
jmp l2
l1: mov al,ds:[si]
mov ds:[di],al
l2:inc si
inc di
loop l0
mov dx,offset str1
mov ah,9
int 21h
mov dx,offset str2
mov ah,9
int 21h
mov ah,4ch
int 21h
CODE ENDS
END START
我随便举了一个数据段的例子
回答你第二个问题好了,用51的芯片。有可能你自己需要改下堆栈。
ORG 00H
LJMP START
ORG 30H
START: ;设30H~3FH存放代检测数据,初始化该段内存过程略。
MOV SP,#7FH
CLR RS0
CLR RS1
MOV R0,#30H
CLR A
MOV A,@R0
LOOP:
INC R0
MOV B,@R0
PUSH ACC
PUSH B
DIV AB
JNZ NEXT
POP ACC
POP B
LJMP LOOP_END
NEXT:
POP B
POP ACC
; LJMP LOOP_END
LOOP_END:
CJNE R0,#30H,LOOP
MOV P1,A
END