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

菜鸟提问:这个程序无法循环是为什么啊?

mobileangle 发布于 2010-05-26 20:45, 701 次点击
DATA SEGMENT
INPUT DB 0AH,0AH,'PLEASE INPUT A NUMBER:'
ERROR  db  0ah,0dh,'INPUT ERROR!';0ah,0dh是字符型2个字符,是回车换行符
BUF  DB 10
      DB ?
      DB 10 DUP(0)
ARR    DD 2 DUP(0)
DATA ENDS
CODE SEGMENT
         ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
       MOV DS,AX

                                       
       mov ah,08H                                            ;dos调用的8号功能:不需要提供入口参数,等待键盘输入一个字符。自动将ASCII码存入AL中
          int 21h
        
    CMP AL,30
    JB A1
    CMP AL,39
    JA A1

        mov BL,AL
        MUL BL
        XOR BH,BH
        MUL BL
      
        CMP AX,0FFH
        JA     A
B1:        DIV 10
            MOV BL,AL
            PUSH AH
            CMP BL,0
            INC CX
            JNE B1   
            JMP  A2
A:            DIV 10
            PUSH DX
B2:        DIV 10
            MOV BL,AL
            PUSH AH
            CMP BL,0
            INC CX
            JNE B2   

A1:  LEA  dx,error                      ;出错提示
      mov ah,9
      int 21h

    A2:POP AH
        LOOP A2
         MOV AH,4CH
        INT  21H
    CODE ENDS
              END START
 
 
错误提示
3 回复
#2
ONEPROBLEM2010-05-27 23:31
建议用DEBUG跟踪看看
#3
寒风中的细雨2010-05-28 09:30
data    segment
input     db 0ah, 0dh,  'Please input a number:', '$'
error    db 0ah, 0dh, 'Input error!', '$'
divs    db 10
data    ends

stack    segment    stack
    db 200 dup(0)
stack    ends

code    segment
    assume cs:code, ss:stack, ds:data
start:    mov ax, data
    mov ds, ax
   
    mov cx, 0
   
    mov dx, offset input
    mov ah, 9
    int 21h
   
    mov ah, 8
    int 21h
   
    cmp al, 30h
    jb A1
    cmp al, 39h
    ja A1
   
    sub al, 30h
    mov bl, al
    mul bl
    xor bh, bh
    mul bl
   
    cmp ax, 0ffh
    ja A
   
B1:    inc cx
    mov ah, 0
    div divs
    mov bl, al
    push ax
    cmp bl, 0
    ja B1
    jmp A2

A:    inc cx
    div divs
    push dx
    jmp B1
        
A1:    lea dx, error
    mov ah, 9
    int 21h
   
A2:    pop ax
    add ah, 30h
    mov dl, ah
    mov ah, 2
    int 21h
    dec cx
    cmp cx, 0
    ja A2
   
    mov ah, 4ch
    int 21h
   
code    ends
    end    start
   
#4
mobileangle2010-05-28 12:44
感激不尽——
要好好研究一下了
 
实验课时间太有限了
老师也不能随时指导D
感谢寒风大大
1