检查数字是否可被2整除,如果是,则打印数字

宜兰·艾泽曼(WS)

好吧,这是我的ASM代码的一部分:

    MOV AH, 0 ;reset AH before division
    MOV AL,[myNum] ;move the inputed number to AL
    DIV two ;div 123 / 2;
    CMP AH,0
    JNE inputIsPrime

    ;If 123 % 2 = 0, output 123 / 2.
    DIV ten
    MOV DH,AH

    SUB AL,'0'
    MOV AH,2
    MOV DL, AL
    INT 21h

    MOV divisionCalc,DH

    MOV AH,2
    MOV DL,DH
    INT 21h
    JMP endProg

我要达到的目的是,在键盘上输入“ 60”并按Enter键后,输出错误。我想得到数字“ 30”,因为60/2 =30。如果输入42,我想得到21作为输出。

为什么我的代码失败的任何想法?

这是完整的代码:

.MODEL SMALL
.STACK 100h
.DATA

DisplayString DB 'Enter number up to 120:', 13,10,'$'
isPrimeNum DB 'is prime', 13,10,'$'
    goodMSG DB 'good', 13,10,'$'
        badMSG DB 'bad', 13,10,'$'
divisionCalc DB ?
myNum DB ?
two DB 2
three DB 3
five DB 5
seven DB 7
ten DB 10
eleven DB 11

    .CODE
Begin:
    MOV AX,@DATA
    MOV DS,AX

    MOV AH,9
    MOV DX,OFFSET DisplayString
    INT 21h

    MOV BL,0 ; Initialize BL to zero!

    ; //READ 3 DIGITS // ;
    ;read first digit for e.g. '1'
    MOV ah,1h
    INT 21h ;read into AL
    SUB AL,30h ; Convert the digit from ASCII to DECIMAL
    MOV myNum,AL

    MOV AH,1
    INT 21h

    CMP AL,13 ;is it Enter?
    JE endInput
    SUB AL,'0' ;Not enter, let's save this new char
    MOV CL, AL ; we save the 2nd char to CL
    MOV AL, myNum ; lets move our first char to AL
    MUL Ten ; multiply by 10 the first char
    MOV myNum,AL ;move that to myNum
    ADD myNum,CL ; add to AL the 2nd char.

    MOV AH,1
    INT 21h

    CMP AL,13 ; is it enter?
    JE endInput
    SUB AL,'0' ;Not enter, let's save this new char
    MOV CL, AL ; we save the 2nd char to CL
    MOV AL, myNum ; lets move our first char to AL
    MUL Ten ; multiply by 10 the first char
    MOV myNum,AL ;move that to myNum
    ADD myNum,CL ; add to AL the 2nd char.

    mov AH,1 ; if the number is 3 chars then this will be the enter now. 
    int 21h 

    ; // FINISH READING 3 DIGITS // ;
    endInput:

            ; AL = AX / two
        ; AH = AX % two
MOV AH, 0 ;reset AH before division
MOV AL,myNum ;move the inputed number to AL
DIV two ;div 123 / 2;
CMP AH,0
JNE inputIsPrime

;If 123 % 2 = 0, output 123 / 2.
DIV ten
MOV DH,AH

SUB AL,'0'
MOV AH,2
MOV DL, AL
INT 21h

MOV divisionCalc,DH

MOV AH,2
MOV DL,DH
INT 21h
JMP endProg

inputIsPrime:
MOV AH,9
MOV DX,OFFSET isPrimeNum
INT 21h

endProg:
MOV AH,4Ch
INT 21h
END Begin
Tommylee2k

除以2的最简单方法是右移一位的值,
该位移将存储在进位标志中

所以

shr AX,1
jnc isDividable    ; no carry set = there was no division "rest"

将检查AX是否可被2除

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查数字是否可被24整除

来自分类Dev

使用Python递归检查一个数字是否可以被其他数字平均整除

来自分类Dev

检查value是否没有数字,如果是,则用速记Java替换为“ Invalid”

来自分类Dev

以菱形打印数字

来自分类Dev

检查数字是否可以被3和7整除,或者都不被它们整除

来自分类Dev

Ruby函数检查数字是否可以被五整除

来自分类Dev

从1到30的数字可被3整除

来自分类Dev

lsof打印数字端口

来自分类Dev

如何找到可被给定范围内的数字整除的数字?

来自分类Dev

如何检查一个数字是否可以被列表中的每个数字整除

来自分类Dev

找出一个很大的数字是否可被7整除的有效算法

来自分类Dev

如何找到可被7整除的数字计数?

来自分类Dev

检查是否存在总和可被m整除的子集

来自分类Dev

C程序输出一个数字是否可被3整除

来自分类Dev

检查数字是否可被24整除

来自分类Dev

以文本格式打印数字的数字

来自分类Dev

检查数字是否在数组中,如果是,则生成一个新数字

来自分类Dev

Java程序使用带有特定指令的数组来查找数字是否可被11整除

来自分类Dev

以2的幂的和以升序打印数字

来自分类Dev

如何打印一个可被4向上(while循环)或awk整除的数字

来自分类Dev

检查列表中的数字是否可被另一个数字整除的最有效方法

来自分类Dev

如果范围(x,y)中的数字包含数字,则打印数字

来自分类Dev

从表中打印数字

来自分类Dev

如何检查我的矩阵是否可被12整除

来自分类Dev

如果无法整除,如何检查数字是否为素数

来自分类Dev

c / c ++ ptr算法,其数字不可被4整除

来自分类Dev

如何仅显示可被4整除的数字?

来自分类Dev

Python:打印可被 x 和 y 整除的范围内的所有数字

来自分类Dev

数字以及可被另一个数字整除的数字的数字(例如 3)

Related 相关文章

  1. 1

    检查数字是否可被24整除

  2. 2

    使用Python递归检查一个数字是否可以被其他数字平均整除

  3. 3

    检查value是否没有数字,如果是,则用速记Java替换为“ Invalid”

  4. 4

    以菱形打印数字

  5. 5

    检查数字是否可以被3和7整除,或者都不被它们整除

  6. 6

    Ruby函数检查数字是否可以被五整除

  7. 7

    从1到30的数字可被3整除

  8. 8

    lsof打印数字端口

  9. 9

    如何找到可被给定范围内的数字整除的数字?

  10. 10

    如何检查一个数字是否可以被列表中的每个数字整除

  11. 11

    找出一个很大的数字是否可被7整除的有效算法

  12. 12

    如何找到可被7整除的数字计数?

  13. 13

    检查是否存在总和可被m整除的子集

  14. 14

    C程序输出一个数字是否可被3整除

  15. 15

    检查数字是否可被24整除

  16. 16

    以文本格式打印数字的数字

  17. 17

    检查数字是否在数组中,如果是,则生成一个新数字

  18. 18

    Java程序使用带有特定指令的数组来查找数字是否可被11整除

  19. 19

    以2的幂的和以升序打印数字

  20. 20

    如何打印一个可被4向上(while循环)或awk整除的数字

  21. 21

    检查列表中的数字是否可被另一个数字整除的最有效方法

  22. 22

    如果范围(x,y)中的数字包含数字,则打印数字

  23. 23

    从表中打印数字

  24. 24

    如何检查我的矩阵是否可被12整除

  25. 25

    如果无法整除,如何检查数字是否为素数

  26. 26

    c / c ++ ptr算法,其数字不可被4整除

  27. 27

    如何仅显示可被4整除的数字?

  28. 28

    Python:打印可被 x 和 y 整除的范围内的所有数字

  29. 29

    数字以及可被另一个数字整除的数字的数字(例如 3)

热门标签

归档