assembly EMU 8086记分牌[已关闭]

rkkpypqq  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(133)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

3天前关闭。
Improve this question
这个代码没有在屏幕上输出.我怎么能?

increase_counter proc
    push ax               ; Registerleri koru

    ; Sayıyı arttır
    inc sayac1
    jnc skip_counter2     ; Carry flag'i sıfır ise 2. basamağı arttırma
    inc counter2

skip_counter2:
    ; Sayı 9'dan büyükse sıfırla
    cmp counter1, '9'+1
    jg reset_counter
    cmp counter2, '9'+1
    jg reset_counter

    ; Sayacı ekrana yazdır
    call print_counter

    pop ax                ; Registerleri geri yükle
    ret
increase_counter endp

; Sayıyı azaltmak için bir yordam tanımlayın
decrease_counter proc
    push ax               ; Registerleri koru

    ; Sayıyı azalt
    dec counter1
    jnc skip_counter2     ; Carry flag'i sıfır ise 2. basamağı azaltma
    dec counter2

sayac2:
    ; Sayı 0'dan küçükse 9'a eşitle
    cmp counter1, '0'-1
    jl reset_counter
    cmp counter2, '0'-1
    jl reset_counter

    ; Sayacı ekrana yazdır
    call print_counter

    pop ax                ; Registerleri geri yükle
    ret
decrease_counter endp 
call key_pressed

; Tuşa basılmışsa sayıyı arttır veya azalt
cmp al, '+'
je increase_counter
cmp al, '-'
je decrease_counter

; Tuşa basılmamışsa işlemi tekrarla
jmp start

; Sayıyı arttırmak için bir yordam tanımlayın
increase_counter proc
    push ax               ; Registerleri koru

    ; Sayıyı arttır
    inc counter1
    jnc skip_counter2     ; Carry flag'i sıfır ise 2. basamağı arttırma
    inc counter2

skip_counter2:
    ; Sayı 9'dan büyükse sıfırla
    cmp counter1, '9'+1
    jg reset_counter
    cmp counter2, '9'+1
    jg reset_counter

    pop ax                ; Registerleri geri yükle
    ret
increase_counter endp

; Sayıyı azaltmak için bir yordam tanımlayın
decrease_counter proc
    push ax               ; Registerleri koru

    ; Sayıyı azalt
    dec counter1
    jnc skip_counter2     ; Carry flag'i sıfır ise 2. basamağı azaltma
    dec counter2

skip_counter2:
    ; Sayı 0'dan küçükse 9'a eşitle
    cmp counter1, '0'-1
    jl reset_counter
    cmp counter2, '0'-1
    jl reset_counter

    pop ax                ; Registerleri geri yükle
    ret
decrease_counter endp

; Sayıyı sıfırlamak için bir yordam tanımlayın
reset_counter proc
    mov counter1, '0'
    mov counter2, '0'
    ret
reset_counter endp
bvn4nwqk

bvn4nwqk1#

你已经有了很好的逻辑来处理计数器的内部操作。不幸的是,这还不足以把它显示在屏幕上。最简单的方法是这样的:

mov ah, 2
mov dl, counter1
int 21h
mov dl, counter2
int 21h

请注意,文本光标在此之后不会自己跳回到屏幕的左上角,如果您想这样做,您还需要添加以下内容:

mov ah, 2  ;you can skip this if you did it earlier
xor dx,dx  ;mov dl,0 and mov dh,0
int 10h

相关问题