我的汇编语言程序jne无法正常工作

时间:2020-01-03 13:34:32

标签: assembly emu8086

我想在dna作为字符串的emu 8086上编写汇编语言程序,获取每个序列(长20个字符的子字符串)并检查它是否是回文,如果是,它将以红色打印,如果不,它会以白色打印;它还删除了用作序列分隔符的“-”。 在这里,我编写了一个程序,但是有两个问题:第一个是检查回文的部分,我在al和bl中都放了两个字符,然后将它们比较,如果它们不相等,我停下来跳到print_white函数,问题是即使al和bl不同,它仍然不会跳跃; 我的最后一个问题是:我不知道如何更改颜色,我尝试了多种方法,但是它们不起作用

这是我的代码:

org 100h 
jmp deb
m1:
dna dw 'GCAACCGCCAACGCGTATGA-GCGCGGATGCGCGCGGATGC-TTACGCGTAAAATGCGCATT-CTTCCGCACATCCCGCTACT-GCACGATGGTACCGGTCGCC-CCTGCCATGGTGTGATCCGC-CCGCTACTGCCGTCATCGCC-AAAATAGGCGCCACAGAAAC-GCAGAGGGGAAGGGGAGACG-CGCTCCTTCGGCTTCCTCGC-GTCCGGACCGTGCTGACCCC-AAAATAGGCGCCACAGAAAC-','$' ; this is dna
seq_size = 20 
string_size= $ - m1 
deb: 
lea di, dna
mov si, di
add si, seq_size 
dec si  
mov ah, 9
start: 
cmp [di], 45
jna stop 
cmp [di], 90
ja stop
   mov cx, seq_size  ;here is the palindrome part
   shr cx, 1        
   next_char:
       mov al, [di]
       mov bl, [si]
       cmp al, bl 
       jne print_white  ;here is the jne that is not working for me 
       inc di
       dec si
   loop next_char
   jmp print_red 

print_white :
        mov ax, 10
        sub ax, cx 
        mov cx, 19
        sub di, ax
            printing:
            mov dl, [di]
            mov ah, 2
            int 21h
            inc di 
        loop printing
        mov dl, [di]
        mov ah, 2
        int 21h
        inc di
        inc di
        jmp start

print_red: ;here is the part that i want to use to print the palindromes in red 
        mov ax, 10
        sub ax, cx 
        mov cx, 19
        sub di, ax
            printing2:
            mov dl, [di]
            mov ah, 2
            mov bl, 4 
            mov al, dl
            mov bh, 0
            int 21h
            inc di 
        loop printing2
        mov dl, [di]
        mov ah, 2
        int 21h
        inc di 
        inc di
        jmp start 

stop:
    mov ah,4ch
    int 21h

ret

1 个答案:

答案 0 :(得分:0)

注意:是为NASM编写的,因此可能需要对EMU8086进行一些修改

尝试此操作以获取大小,并注意我如何更改数据区域的格式,因此容易识别每个条目的长度相同。

user1,user2

也请注意,我使用DB而不是DW。由于汇编器(NASM)将其标识为字符串,因此DW被忽略,但是不使用正确的名称是一种不好的做法 数据类型。