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

📄 按月查询并输出英文缩写.asm

📁 月分查询并将查询到的月份用英文显示.可以帮助你快速找到相应月份对应的英文.
💻 ASM
字号:
;题目   按月查询并输出英文的全称
;********************************
data segment para 'data'                      ;定义数据段的内容
             nine db 9                        ;月份的英文字母的全部长度
             monask db 'month?',13,10,'$'     ;询问要查询的月份   0d-回车  0a-换行 
             monin label byte                 ;将monin的类型指定为字节且与max有相同的偏移量(段内)
             max db 9                         ;英文的全称的最大长度
             act db ?                         ;存放数字的位数                       
             mon db 3 dup(?)                  ;存放输入的数字                
;
             alfmon db '?????????',13,10,'$'                       ;
             montab db 'JANAUARY ','FEBRUARY '                     ;月份的英文表格
                    db 'MARCH    ','APRIRL   ','MAY      '         
                    db 'JUNE     ','JULY     '
                    db 'AVGUST   ','SEPTEMBER','OCTOBER  '
                    db 'NOVAMBER ','DECEMBER '
;
data ends                                                          ;数据段定义结束

;*******************************
conseg segment para 'code'                    ;定义代码段的内容
       assume cs:conseg,ds:data,es:data       ;代码段,数据段,附加段的装入
       main proc far                          ;定义一个过程且将属性指定为远属性
            push ds                           ;保护数据段
            sub ax,ax                         ;将AX寄存器中的内容清零
            push ax                           ;保护AX寄存器中的内容
;
            mov ax,data                       
            mov ds,ax                         ;把data数据段的段基值放入ds段中
            mov es,ax                         ;把AX所装的段基值放入附加段中
;输入要查询的月份

start:
      lea dx,monask                           ;装入monask的有效地址
      mov ah,09
      int 21h                                 ;字符串显示功能  输出'month?' 然后回车.换行
      
      lea dx,monin                            ;装入monin的有效地址
      mov ah,0ah
      int 21h                                 
      
      mov dl,13
      mov ah,02                               
      int 21h                                 ;显示输出回车
      
      mov dl,10                               
      mov ah,02
      int 21h                                 ;显示输出换行
      
      cmp act,0
      je exit                                 ;跳转的条件
;将ASCII码值转换为十进制数值

      mov ah,30h                              ;建立月份
      cmp act,2                               ;判断是否是两位数                        
      je ewo                                  ;跳转到ewo                    
      mov al,mon                                 
      jmp conv                                ;无条件转移到conv
  
ewo:  mov al,mon+1                            ;mon 中低位的内容给al                            
      mov ah,mon                              ;mon 中高位的内容给ah
  
conv:xor ax,3030h                             ;清空ASCII码值
       cmp ah,0                               ;月份 01-09?
       jz loc                                 ;是的话  直接通过
       sub ah,ah                              ;否的话  清空寄存器AH中的值
       add al,10                              ;修正常数值使之存在al处
;确立在所建立的月份表中的位置

  loc:lea si,montab                           ;装入montab的有效地址
      dec al                                  ;月份数减-1                    地址=montab+(月份数-1)*9
      mul nine                                ;计算九个字符的长度
      add si,ax                                
      mov cx,09                               ;重复移进的次数
      cld                                     ;将方向标志清零
      lea di,alfmon                           ;读入alfmon的地址
      rep movsb                               ;重复移进九个字符
;显示阿拉伯数字的月份

      lea dx,alfmon                           ;将alfmon的有效地址装入dx中
      mov ah,09
      int 21h                                 ;打印输出月份的英文全称
      
      jmp start                               ;是否还有输入
      exit:ret                                ;没有的话 跳出 
      main endp                               ;过程定义结束

conseg ends                                   ;代码段定义结束
;*******************************

 end main
          

⌨️ 快捷键说明

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