求助(很基本的汇编程序):汇编语言分支,循环程序设计实验 大小写字母转换

2025-02-24 21:09:58
推荐回答(2个)
回答1:

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

我随便举了一个数据段的例子

回答2:

回答你第二个问题好了,用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