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

📄 digui.asm

📁 本程序是本人在学习汇编课程时所编写的
💻 ASM
字号:


;--数据段------------------------------------------------------------------ 
data    segment                  ;定义作为数据段的逻辑段,段名为data 

error   db 'input error,input again',0dh,0ah,'$'   ;定义要显示的字符error

data    ends                     ;数据段结束
;--代码段------------------------------------------------------------------ 
code    segment 'code'           ;定义作为代码段的逻辑段,段名为code
        assume cs:code,ds:data   ;确定各个逻辑段的类型
start:  mov ax,data              ;程序开始点 
        mov ds,ax                ;设置DS指向程序数据段的地址
start1: mov ah,01h
        int 21h
        mov bl,al
        sub bl,30h
        cmp bl,3
        jb disp1
        cmp bl,7
        ja disp1
        call change               ;回车换行
        call change        
        and cx,0000h              ;将寄存器清零
        and dx,0000h 
        mov ax,0001h
        call digui               ;调用子程序算阶乘                
        call zhuan                ;转换成十六进制并输出
        jmp endl 
disp1:  mov dx,offset error      ;指定字符串error在数据段的偏移地址 
        mov ah,09h
        int 21h
        jmp start1               ;利用功能调用显示信息  
endl:   mov ax,4c00h
        int 21h                  ;程序结束点,返回dos
;----递归算阶乘------------------------------------------
digui   proc
        mov cl,bl
        push cx
        sub bl,01h         
        cmp bl,01h
        jnz next
        jmp next1        
next:   call digui
next1:  pop cx
        ;mov al,bl
        mul cx        
        ret
digui  endp
;--结果转换成十六进制并输出--------------------------------------
zhuan   proc        
        push dx
        mov dx,0000h
        mov cx,16
        div cx
        cmp ax,00h
        je next2
        call zhuan
next2:  cmp dl,09h           ;小于等于9加30h,大于9加37h
        jbe next3
        add dl,37h
        jmp next4
next3:  add dl,30h
next4:  mov ah,02h
        int 21h       
        pop dx
        ret
zhuan   endp
;--定义子程序输出回车换行----------------------------------------------- 
change    proc                   ;定义过程,过程名为change
          push ax
          mov dl,0dh
          mov ah,02h
          int 21h
          mov dl,0ah
          mov ah,02h
          int 21h
          pop ax
          ret                    ;子程序返回 
change  endp 
code    ends                     ;代码段结束
        end start                ;汇编结束,程序开始点为start 

⌨️ 快捷键说明

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