如何在ASM中输入最多3位数的数字

时间:2016-03-25 17:30:56

标签: assembly x86 dos

我想写一个程序,检查数字是否为素数。

我的第一个问题:如何存储输入(0-999)号码?

.MODEL SMALL
.STACK 100h
.DATA

DisplayString DB 'Enter number up to 120:', 13,10,'$'

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

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

    MOV ah,1h
    INT 21h ;read into AL

    ;The code to store the number here




    MOV AH,4Ch
    INT 21h
    END Begin

嗯,如果它是0-9很容易,但如果数量是120?我该如何存放?我想过使用一个数组,然后将每个元素乘以10,然后添加下一个。

例如,120将类似于:(((1 * 10)+ 2)* 10)+0

我的代码:

; //READ 3 DIGITS // ;
;read first digit fo e.g. '1'
MOV ah,1h
INT 21h ;read into AL

; BL will be 10.
MUL num ; AX = AL * num
MOV BL,AL

; read second digit for e.g. '2'
MOV ah,1h
INT 21h ;read into AL

;BL will be '11' now.
ADD BL,AL

;BL will be '110' now.
MUL num ; AX = AL * num
MOV BL,AL

;read third digit
MOV ah,1h
INT 21h ;read into AL

;AL is 3, so BL will be '123'
ADD BL,AL

; // FINISH READING 3 DIGITS // ;

0 个答案:

没有答案