装配查找书写符号是否为数字

时间:2014-10-21 08:09:37

标签: assembly compare tasm

我迷失在集会神奇的世界里。如果键入的符号是数字还是其他符号,是否有可能检入汇编(我正在使用TASM)?示例:我输入'A'并且程序打印出来它不是数字并结束程序。如果我输入数字,它将继续该程序。

同一页面上的另一个问题(不创建新帖子):如何比较编写的字符串是程序所期望的?例如,如果您输入'/?'程序打印出某些消息?

任何答案都非常感谢。

这是我的书面程序,我需要实现这些功能:

.model small
.stack 100h

.data 
    abc db 10
    eilmax db 10, ?, 10 dup(0)

.code
start:
    mov ax, @data
    mov ds, ax
    mov ah, 0Ah
    mov dx, offset eilmax
    int 21h
    mov ax, 0
    mov bx, offset eilmax[2]
    jmp change  

change:             ;written number converts from ascii to dec
    mov ch, 0
    mov cl, byte ptr [bx]
    cmp cl, 13
    je fibo
    sub cl, 48
    mul abc
    add ax, cx 
    inc bx
    jmp change    

fibo:              
    mov bx, 0
    mov cx, 1

findfibo:           ;finds n-th number of fibonacci sequence
    add bx, cx
    mov dx, bx
    mov bx, cx
    mov cx, dx
    sub ax, 1
    cmp ax, 1 
    je  find
    jmp findfibo 

find:              ;finds if number is less or greater than 10
    cmp bx, 10
    jge convert
    jmp writesmall

convert:            ;if number is > 10, program devides number to two numbers
    mov dx, 0
    mov ax, 0
    mov ax, bx
    mov bx, 10
    div bx
    jmp writebig

writebig:          ;prints out greater than 10 found number
    mov bx, 0
    mov bx, dx
    mov dx, 0
    add ax, 48
    mov dx, ax
    mov ah, 02h
    int 21h
    add bx, 48
    mov dx, bx
    mov ah, 02h
    int 21h
    jmp chg

writesmall:          ;print out less than 10 found number
    add bx, 48 
    mov dx, bx  
    mov ah, 02h
    int 21h
    jmp chg

chg:                ;end program
    mov ax, 4C00h
    int 21h

end start

1 个答案:

答案 0 :(得分:0)

ASCII数字将在范围内(0x30; 0x30 +9)// 48十进制(第一个问题)

可能有用的中断:

INT 16h / AH = 00h - 从键盘获取击键(无回声)。     AL = ASCII字符。

INT 16h / AH = 01h - 检查键盘缓冲区中的击键。     AL = ASCII字符。

字符串指令集(第二个问题):

CMPSB - 比较字节:ES:来自DS的[DI]:[SI]。

LODSB - DS的加载字节:[SI]到AL。更新SI。

MOVSB - DS的字节:[SI]到ES:[DI]。更新SI和DI。

SCASB - 来自AL的比较字节:ES:[DI]

STOSB - 将AL中的字节存储到ES:[DI]中。更新DI.

REP - 重复函数cx次

有关示例和文档,请参阅: emu8086 documentation