当前位置:编程学习 > 汇编语言 >>

汇编中使用INT 21H中的0AH输入字符串,然后怎么输出这个字符串中的字符数

data segment mess db 'input a string',0ah,0dh,'$' in_buf db 81,?,81 dup(?) data ends stack segment para stack'stack' db 1024 dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax disp:mov dx,offset mess mov ah,09h int 21h keyi:mov dx,offset in_buf mov ah,0ah int 21h mov ah,02h mov dl,0dh int 21h mov ah,02h mov dl,0ah int 21h dispo:lea si,in_buf inc si mov al,[si] cbw inc si add si ,ax mov byte ptr [si],'$' count equ($-in_buf) mov si,offset in_buf+2 mov dl,byte ptr[si] mov ah,02h int 21h code ends end start 这个是我写的,可以实现输出字符串第一个字符的功能,但是我想输出字符串的 长度,应该怎么实现呢
答案:直接将In_Buf+1这个字节单元的数值转换成码ASCII输出即可.
其他:试试如下改动:

……
dispo:
    lea  si, in_buf
    inc  si
    mov  al, [si]  ;取出字串长度.
    cbw
    inc  si
    add  si, ax    ;串尾位置.
    mov  byte ptr [si], '$'  ;写入$

    mov DX, offset in_buf + 2
    mov ah, 09h    ;整串输出.
    int 21h

    MOV  AH, 4CH
    INT  21H

code ends
end start 

上一个:关于8086汇编的寻址方式一题:MOV [1200],23H 请指出该指令的正误
下一个:汇编问题,求人指点。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,