回 帖 发 新 帖 刷新版面

主题:[讨论]求助:运行结果错了

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    push ds
    sub ax,ax
    push ax
    
    MOV AX,DATAS
    MOV DS,AX
    
    mov ax,0A345h
    mov ch,4
loop1:
    mov cl,4
    rol ax,cl
    mov bl,al
    and bl,0fh
    add bl,30h
    cmp bl,3ah
    jl printit
    add bl,07h
printit:    
    mov dl,bl
    mov ah,2
    int 21h
    dec ch
    jnz loop1
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

//为什么得到的结果是A000而不是A345呢?

回复列表 (共1个回复)

沙发

mov ax,0A345h -----------》ax保存者数据
    mov ch,4
loop1:
    mov cl,4
    rol ax,cl
    mov bl,al
    and bl,0fh
    add bl,30h
    cmp bl,3ah
    jl printit
    add bl,07h
printit:    
    mov dl,bl
push ax ---------可以先把 ax入栈
    mov ah,2------》但这里改变了ah,因此把ax保存的的值破坏了
    int 21h
pop ax -------调用中断后,在恢复 ax原来的值



;第二个办法是把 数据0A345h 保存在内存中

我来回复

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