注册 登录
编程论坛 汇编论坛

求一个程序

三断笛 发布于 2007-11-28 12:11, 1069 次点击
从键盘输入一字符串存放在IN-BUF缓冲区中,然后在下一行反序显示出来,要怎么编?
4 回复
#2
zhoulikelvjj2007-11-28 12:50
mov si,0
AGN:cmp al,0dh      ;输入部分,是回车,退出输入
            jz EXT
            mov buf[si]
            inc si
            jmp AGN

EXT:mov dl,buf[si]     ;逆序输出
        mov ah,2
        int 21h
        dec si
        jnz EXT
#3
永夜的极光2007-11-28 12:55
以下程序MASM5测试通过
;将输入的字符串反向输出
;作者:永夜的极光
;时间:2007-11-28
;程序运行结果:
;Please Input String(Len<50):abcdefg
;After change:gfedcba
;Press Any Key To Exit...

.model small
.386
.data
        inf0 db 'Please Input String(Len<50):','$'
        inf1 db 13,10,'After change:','$'
        buf db 50,?,50 dup (?)
        inf_exit db 13,10,'Press Any Key To Exit...$'
.code
        mov ax,@data
        mov ds,ax
        lea dx,inf0
        mov ax,0900H
        int 21H
        lea dx,buf
        mov ax,0a00H
        int 21H
        lea dx,inf1
        mov ax,0900H
        int 21H
        xor cx,cx
        mov cl,buf[1]
        lea si,buf[1]
        add si,cx
        mov ax,0200H
l1:
        mov dl,[si]
        int 21H
        dec si
        loop l1
        lea dx,inf_exit
        mov ax,0900H
        int 21H
        mov ax,0700H
        int 21H
        mov ah,4ch
        int 21h
end

[[italic] 本帖最后由 永夜的极光 于 2007-11-28 12:57 编辑 [/italic]]
#4
zhoulikelvjj2007-11-28 16:08
为什么我每次在386下用INT 21H运行程序时都会提示一堆乱七八糟的东西
是不是跟.model那有关系啊
我都用.model flat
#5
永夜的极光2007-11-28 20:29
386用flat没错的
你具体用了int 21H的那个功能,如果是调用09H的功能来显示字符串,那么要求字符串要以'$'结束
1