汇编语言程序:从A1单元开始定义了一个长度为N的字符串,找出其中所有的大写字母并存放在以

2025-05-01 07:26:56
推荐回答(1个)
回答1:

code  segment
      assume cs:code
      org 100h
start:jmp begin

a1    db 'twrqetgdhsgadh652346HGFDGFGRYGJHFJHDKJH762378tutyruwey'
n     db $-a1
m     equ $-a1
a2    db m dup('$')
l1    db 0

begin:push cs
      pop ds
      push cs
      pop es
      
      lea si,a1
      lea di,a2
      mov cx,m
      mov bl,0
      cld
@m1:
      lodsb
      call isup
      cmp ah,0
      je @m2
      stosb
      inc bl
@m2:
      loop @m1
      
      mov l1,bl
      lea dx,a2
      mov ah,9
      int 21h
      
      mov ah,4ch
      int 21h

;=============================================
; al--为要判断的字符,ah--为返回结果
;                       ah=1 为是; ah=0 为否
isup  proc near
      push es
      push cx
      push di
      pushf
      push cs
      pop es
      lea di,@upchs
      mov cx,26
      repne scasb
      je @isup1
      mov ah,0
      jmp @isupexit
@isup1:
      mov ah,1
@isupexit:
      popf
      pop di
      pop cx
      pop es
      ret
@upchs  db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
isup  endp
;==========================================

code  ends
      end start