回 帖 发 新 帖 刷新版面

主题:问几个汇编的问题

刚学汇编没多久,遇到了几个问题,没想明白,请大家帮忙,如下:
1、字符串输入指令mov ah,10,输入的字符是以ascii码存储吗?
2、调用mov ah,10指令时,需先定义缓冲区。我定义如下:
buf db 5
    db ?
    db 5 dup(0)
输入的字符从第三个字节开始存放,那是不是最多只能存放3个输入字符?
为什么我在输入时,最多可以输入4个字符?
3、可不可以编个小例演示一下,用mov ah,10指令往buf存输入的字符,然后将缓冲区的内容分别显示出来(包括其大小和实际字符数)?

回复列表 (共4个回复)

沙发

1。不是ASCII,是10进制数10
2。最多可放5个字符,最后一个是0DH,输入的时候只除了0DH外,只能有4个
3。data     segment
ask    db 'Input:$'
_size    db 'Size:$'
content    db 'Content:$'
buf     db 5
    db ?
    db 5 dup(0)
data    ends
;;;
code    segment
    assume cs:code, ds:data
_start:    mov    ax,data
    mov    ds,ax
    ;;
    mov    dx,offset ask
    mov    ah,9
    int    21h
    ;;
    mov    dx,offset buf
    mov    ah,10
    int    21h
    ;;
    mov    dl,13
    mov    ah,2h
    int    21h
    mov    dl,10
    int    21h
    ;;
    mov    bl,buf+1
    add    bl,30h
    mov    dx,offset _size
    mov    ah,9h
    int    21h
    mov    dl,bl
    mov    ah,2h
    int    21h
    ;;
    mov    dl,13
    mov    ah,2h
    int    21h
    mov    dl,10
    int    21h
    ;; 
    mov    dx,offset content
    mov    ah,9h
    int    21h
    mov    cl,buf+1
    xor    ch,ch
    mov    si,offset buf+1
_output:
    inc    si
    mov    dl,[si]
    mov    ah,2h
    int    21h
    loop    _output
    ;;
    mov    ah,4ch
    int    21h
code    ends
    end    _start

板凳

1、字符串输入指令mov ah,10,输入的字符是以ascii码存储吗?

    是的,假如你定义的键盘缓冲区是BUF,那么从BUF+1开始都对应你输入的一个字符的ASCII码。



2、调用mov ah,10指令时,需先定义缓冲区。我定义如下:
buf db 5
    db ?
    db 5 dup(0)
输入的字符从第三个字节开始存放,那是不是最多只能存放3个输入字符?

    实际可以输入4个,从buf+1开始存的.


DATAS SEGMENT
STR   DB 'Please input a string:$'
BUF   DB 20
      DB ?
      DB 20 DUP(?)
CRLF  DB 0AH,0DH,'$'
  DATAS ENDS

STACKS SEGMENT
       DB 200 DUP(?)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
   
    LEA DX,STR
    MOV AH,9
    INT 21H
   
    MOV AH,10
    LEA DX,BUF
    INT 21H
   
    LEA DX,CRLF
    MOV AH,9
    INT 21H
   
    MOV AL,BUF+1
    ADD AL,2
    MOV AH,0
    MOV SI,AX
    MOV BUF[SI],24H
    LEA DX,BUF+2
    MOV AH,9
    INT 21H
   
   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

[url=http://blog.sina.com.cn/u/4c59c08a010007fh]http://blog.sina.com.cn/u/4c59c08a010007fh[/url]
我博客也有讨论类似问题.

3 楼

多谢两位的帮助^_^

4 楼


多谢高人,要不都不知道怎么办呢。

我来回复

您尚未登录,请登录后再回复。点此登录或注册