汇编语言从键盘接收字符串并在屏幕显示

上代码

data segment
    msg db 13,10,'input string ',13,10,13,10,'$'
    data1  db 13,10,13,10
    data2  db 20 dup('$')
data ends
code segment
     assume cs:code , ds:data
     start:
        mov ax,data
        mov ds,ax
        mov dx,offset msg
        mov ah,9
        int 21h
;-------------------------输出提示信息
  mov di , offset data2
  lop:
    mov ah,1
    int 21h
    cmp al,13
    jz exit
    mov [di],al
    inc di
    cmp di,offset data2+20
    jz exit
    jmp lop
    
;----------------------------循环输入 
    exit:
        mov dx,offset data1
        mov ah,9
        int 21h
;----------------------------显示输入字符串
    mov ah,4ch
    int 21h
;----------------------------程序结束
code ends
end start


  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 汇编代码实现: ``` DATA SEGMENT BUFFER DB 20 DUP('$') MESSAGE1 DB 'Enter first string: $' MESSAGE2 DB 'Enter second string: $' RESULT DB 20 DUP('$') NL DB 0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX ; Display message to enter first string LEA DX, MESSAGE1 MOV AH, 09H INT 21H ; Read first string from keyboard to buffer LEA DX, BUFFER MOV AH, 0AH INT 21H ; Display message to enter second string LEA DX, MESSAGE2 MOV AH, 09H INT 21H ; Read second string from keyboard to buffer LEA DX, BUFFER+2 MOV AH, 0AH INT 21H ; Find non-matching characters and store in RESULT LEA SI, BUFFER LEA DI, BUFFER+2 LEA DX, RESULT MOV CX, 20 MOV BX, 0 COMPARE: MOV AL, [SI+2][BX] CMP AL, '$' JE DONE CMP AL, [DI+2][BX] JE CONTINUE MOV [DX+BX], AL INC BX CONTINUE: INC SI INC DI LOOP COMPARE DONE: ; Display non-matching characters LEA DX, NL MOV AH, 09H INT 21H LEA DX, RESULT MOV AH, 09H INT 21H ; Read a character to BX MOV AH, 01H INT 21H MOV BL, AL ; Find number of occurrences of character in first string LEA SI, BUFFER MOV CX, 20 MOV BX, 0 COUNT: MOV AL, [SI+2][BX] CMP AL, '$' JE DISPLAY_COUNT CMP AL, BL JNE CONTINUE_COUNT INC CX CONTINUE_COUNT: INC SI LOOP COUNT DISPLAY_COUNT: ; Display number of occurrences of character LEA DX, NL MOV AH, 09H INT 21H MOV AH, 02H MOV DL, ' ' INT 21H MOV DL, BL INT 21H MOV DL, ':' INT 21H MOV AX, CX CALL DISPLAY_NUM JMP END_PROGRAM DISPLAY_NUM PROC ; Display a number in decimal format PUSH AX MOV BX, 10 XOR CX, CX DIV BX OR AH, '0' MOV DL, AH MOV AH, 02H INT 21H POP AX CMP AX, 0 JE END_DISPLAY JMP DISPLAY_NUM END_DISPLAY: RET DISPLAY_NUM ENDP END_PROGRAM: MOV AH, 4CH INT 21H CODE ENDS END START ``` 2. 上述代码中已经包含了查找第一串字符中相同字符的功能,并将次数显示在屏幕上,实现了整个问题的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值