2016-04-09 61 views
-4

我正在寫一個程序在60秒內打印00到60的延遲!但不知何故,它不工作!你們能幫忙嗎?8086程序集中的秒錶程序

org 100h 

.model small 
.stack 100h 
.data 
    a db 0 
    b db 0 
.code 
    main PROC 
    mov cx,100 
    secnd: 
    mov bl,a 
    add bl,48 
    mov bh,b 
    add bh,48 
    mov ah,2 
    mov dl,bl 
    int 21h 

    mov ah,2 
    mov dh,bh 
    int 21h 

    mov ah,2 
    mov dl,0dh 
    int 21h 

    mov dl,0ah 
    int 21h 

    MOV CX, 0FH 
    MOV DX, 4240H 
    MOV AH, 86H 
    INT 15H 

    inc a 
    loop secnd 
    ret 
+2

請解釋它是如何 「不工作」。 – snakecharmerb

回答

2

你的程序有幾個問題:

  • 由於BIOS調用中使用CX作爲它的一個參數,您有效地摧毀你的循環控制變量! push/pop它:

    mov cx,100 
    secnd: 
    PUSH CX 
    ... 
    POP CX 
    loop secnd 
    ret 
    
  • 你治療一個變量十分之一和b變量作爲單位,但你只改變了前者用單inc a
    你可以選擇這種方式:

    ... 
    inc b 
    cmp b,10 
    jb done 
    mov b,0 
    inc a 
    done: 
    POP CX 
    loop secnd 
    ret