【无标题】汇编实现从键盘输入并输出

汇编实现从键盘输入一个带符号字节数据(如-56)存入内存,并将结果在显示器上以十进制形式显示输出。

data  segment
   x db '-'      ;x存放'-',后面用于判断
   sfn db 0      ;标识,用于判断是否输入负数
   data_n db 0   ;用于存放输入数据
   mess1 db 'Input :','$'
   mess2 db 0ah,0dh,'Output :$';0ah和0dh是换行和回车
data  ends

stack segment
      db 20 dup(?)
stack ends

code segment
assume ds:data,cs:code,ss:stack
start:
    mov ax,data
    mov ds,ax
    
    lea dx,mess1
    mov ah,9;显示信息:"Input :"
    int 21h
    
 input:
     mov ah,1   ;输入
     int 21h
     mov bl,al
     cmp bl,x   ;判断是否为负数
     je equal   ;将sfn赋值为1
     cmp bl,0dh ;判断输入是否结束
     jz retub   ;退出输入
     mov cl,0
     sub al,30h
     mov cl,al  
     xor bl,bl
     mov bl,0ah
     sub al,al  
     mov al,data_n ;对原来的data_n数乘10
     mul bl
     mov data_n,0  ;将原来的数清除,否则会出现累加错误
     add data_n,al ;存入data_n中
     add data_n,cl
     jmp input       
     
 retub:
     lea dx,mess2
     mov ah,9;显示信息:"Output :"
     int 21h           
     cmp sfn,1   ;如果sfn为1,则输出"-"
     jz outw
 retus:          ;返回主程序点  
    mov dl,data_n
    sub cx,cx
    mov cx,1     ;计数,初始为1
    mov bl,10    ;每次除10
    
 print:
    mov ah,0     ;清零
    mov al,dl
    div bl       ;除10
    push ax      ;入栈
    cmp al,0
    jle endl
    mov dl,al
    inc cx
    jmp print
    
 endl:
    pop dx
    xchg dh,dl   ;余数转入dl
    add dl,30h
    mov ah,2
    int 21h
    loop endl   
    
    jmp exit
    
 equal:
     mov sfn,1
     jmp input;返回input主程序,并重新输入
     
 outw:     ;输出'-'
     mov ah,2
     mov dl,x
     int 21h 
     jmp retus  
 exit:        
    mov ax,4c00h
    int 21h
code ends
   end start

运行结果:
【无标题】汇编实现从键盘输入并输出_第1张图片

参考文献:汇编输出十进制数

汇编语言–键盘输入两个一位十进制数 ,以十进制数的形式输出其和

你可能感兴趣的:(汇编语言,自然语言处理)