assembly 如何比较我插入的2个数字,以检查TASM dosbox中哪一个更大?

w46czmvw  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(139)

所以我做了一个程序如果两个数字相似

dosseg
.model small
.stack 100h
.data
        msg1 db 10,13,"Insert first number ...$"
        msg2 db 10,13,"Insert second number ...$"
        msg3 db 10,13,"The numbers are similar ...$"
        msg4 db 10,13,"The numbers are not similar ...$"
                                                                                                                                                        
                                                                                                                                                                                                        

.code
main proc
        mov ax,@data
        mov ds,ax       

        mov dx,offset msg1      
        mov ah,9
        int 21h

       mov ah,1         
       int 21h

       mov cl,al        

       mov dx,offset msg2       
       mov ah,9
       int 21h

       mov ah,1         
       int 21h

       mov dl,al        

       cmp dl,cl        

       je l1    

       mov dx,offset msg4                                                                                                                                                                                                                                    
       mov ah,9
       int 21h
                jmp exit                                                                                                                                                                                                                                                                                                                                                                           
        l1:

        mov dx,offset msg3       
        mov ah,9
        int 21h

        exit:

     mov ah,4ch         
     int 21h
                                                                                                                                                                                                                                                
                                                                                                                                                                                               
main endp

end main

我想知道我怎样比较这两个数字,以检查和打印哪一个更大。
我在这方面完全是个菜鸟,如果我搞砸了内联代码框中的一些东西,请原谅。

bkkx9g8r

bkkx9g8r1#

cmp dl,cl中,您还没有比较输入的数字!您正在比较的是您在键盘上按下的键的ASCII码。例如,如果您按下8和3,您将比较56和51。在执行其他操作之前,您将减去48得到实际数字。

mov  ah, 01h         
int  21h
sub  al, '0'     ; This subtracts 48
mov  cl, al

mov  ah, 01h         
int  21h
sub  al, '0'     ; This subtracts 48
mov  dl, al

cmp  cl, dl
j??  ???         ; One of the many conditional jumps

如果数字是无符号值。

“大于”被命名为上方
“小于”被命名为下方
如果CL中的值高于DL中的值,则ja将跳转
如果CL中的值大于或等于DL中的值,则jae将跳转
如果CL中的值低于DL中的值,则jb将跳转
如果CL中的值小于或等于DL中的值,则jbe将跳转

如果您的数字是有符号值。

“大于”被命名为更大
“小于”被命名为less
如果CL中的值大于DL中的值,则jg将跳转
如果CL中的值大于或等于DL中的值,则jge将跳转
如果CL中的值小于DL中的值,则jl将跳转
如果CL中的值小于或等于DL中的值,则jle将跳转

相关问题