⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yan.asm

📁 用汇编语言产生两个随机数
💻 ASM
字号:
 answer macro
     mov ah,01h
     int 21h
 endm
display macro buffer
      mov dx,offset buffer
      mov ah,09h
int 21h
endm
data segment  
  aa db 13,10,'$'   
  bb db 13,10,'please press y to contine else press any to exit:  $'  
  message1 db 10, 13, 'please choose your + or -: $'
  message2 db 10,13,'you are right $'  
  message3 db 10,13,'the right question is: $'
  message4 db 10,13,'sorry,please answer again  $'
  message5 db 10,13,'please input your answer: $'    
  message6 db 10,13,'if the answer below zero,put the opposite answer.$'
data ends
stack segment
  db 4 dup(?)
stack ends
code segment
zz proc far
  assume ds:data,cs:code,ss:stack
xian:  
        display aa     
        mov ah,0
;_____________显示第一个字符
      int 1ah
      mov ax,dx
      and ah,3
      mov dl,32h
      div dl   
      mov bl,ah
;************************************************
   push dx
    push ax
    push bx
    xor ah,ah
    mov al,bl
    mov bl,0ah
    div bl
    push ax    
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
    pop ax    
    add ah,30h
    mov dl,ah
    mov ah,02h
    int 21h
    pop bx
    pop ax
    pop dx
;*****************************************
      mov dl,bl
      push dx
       mov dx,'  '
       mov ah,02h
       int 21h

  ;___________显示第二个字符
         int 1ah
         mov ax,dx
         and ah,3
         mov dl,32
         div dl         
         mov bl,ah
;************************************************
   push dx
    push ax
    push bx
   xor ah,ah
    mov al,bl
    mov bl,0ah
    div bl
    push ax    
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
pop ax    
    add ah,30h
    mov dl,ah
    mov ah,02h
    int 21h
    pop bx
    pop ax
    pop dx
;*****************************************
         mov al,bl
         push ax     
      xor ax,ax     
      mov ax,data
      mov ds,ax
      mov cx,3
     display bb
     answer
     cmp al,'y'
     jz contine
      mov ah,4ch
       int 21h      
contine:
     display message1
     answer
     cmp al,'+'
     jz error    
     cmp al,'-'
     jz xia
xia:
     jmp  near ptr exit     
     mov ah,4ch
     int 21h
error:    
     display message5   
     pop ax
     pop dx

     add al,dl  
     xor ah,ah   
     push ax
     mov bx,ax           
;_______________加法计算结果 
      mov cx,03h         
xun:
       answer   
        cmp al,'9'
        jbe jian
        sub al,37h
        and al,0fh    
jian:                                
       mov dl,al
        shl dl,01h
        shl dl,01h
        shl dl,01h
        shl dl,01h
        answer
        cmp al,'9'
        jbe jia
        sub al,07h
jia:  
         sub al,30h
         and al,0fh
         add al,dl                     
;*****************************************
         xor ah,ah
         mov dl,10h
         div dl
         shl al,01h
         mov dl,al
         shl al,01h
         shl al,01h
         add al,dl        
         add al,ah
;*******************************************                        
          cmp al,bl
          jnz  heihei
          jz gaga    
heihei:     
          display message4             
          loop  xun  
          display message3
;_______________显示正确加法结果 
    push dx
    push ax
    push bx
   xor ah,ah
    mov al,bl
    mov bl,0ah
    div bl
    push ax    
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
    pop ax    
    add ah,30h
    mov dl,ah
    mov ah,02h
    int 21h
    pop bx
    pop ax
    pop dx
;*****************************************         
 jmp near ptr xian
 ;_______________  
          
gaga:
         display message2     
 ;_________________返回
         jmp near ptr xian
 ;_______________          

exit: 
      display message5  
      display message6
       pop ax
       pop dx
       cmp dl,al
       jb fu

       sub dl,al      
       mov al,dl      
       mov bx,ax 
       jmp xiaz  
fu:
       sub al,dl       
       mov bx,ax      
;_______________减法计算结果 
xiaz:  
     mov cx,03h 
xunn:      
       answer   
        cmp al,'9'
        jbe jianm
        sub al,37h
        and al,0fh
jianm:       
        mov dl,al
        shl dl,01h
        shl dl,01h
        shl dl,01h
        shl dl,01h
        answer
        cmp al,'9'
        jbe jiam
        sub al,07h
jiam:  
         sub al,30h
         and al,0fh
         add al,dl  
;*****************************************
         xor ah,ah
         mov dl,10h
         div dl
         shl al,01h
         mov dl,al
         shl al,01h
         shl al,01h
          add al,dl       
         add al,ah
;*******************************************              
          cmp al,bl
          jnz  heiheim
          jz gagam    
heiheim:     
          display message4
;______________________显示正确的减法结果
          loop  xunn 
          display message3 
;************************************************
    push dx
    push ax
    push bx
   xor ah,ah
    mov al,bl
    mov bl,0ah
    div bl
    push ax    
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
    pop ax    
    add ah,30h
    mov dl,ah
    mov ah,02h
    int 21h
    pop bx
    pop ax
    pop dx
;*****************************************       
    
          jmp near ptr xian
;_______________  

gagam:
         display message2     
;_________________返回
         jmp near ptr xian          
;____________
       
zz endp
code ends
   end xian

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -