zoukankan      html  css  js  c++  java
  • 汇编:采用址表的方法编写程序实现C程序的switch功能


    //待实现的C程序
    1
    void main() 2 { 3 int grade=90; 4 switch(grade/1-0) 5 { 6 case 9: 7 printf("excellence"); 8 break; 9 case 8: 10 printf("good"); 11 break; 12 case 7: 13 printf("average"); 14 break; 15 case 6: 16 printf("pass"); 17 break; 18 default: 19 printf("fail"); 20 } 21 }

    汇编代码:

     1 ;采用地址表的方法编写汇编程序实现以下的C程序的功能
     2 DATAS SEGMENT
     3 grade dw 90
     4 ComTab dw coma,comb,comc,comd
     5 g1 db 'excellent','$'
     6 g2 db 'good','$'
     7 g3 db 'average','$'
     8 g4 db 'pass','$'
     9 g5 db 'fail','$'
    10 DATAS ends
    11 CODES SEGMENT
    12     ASSUME CS:CODES, DS:DATAS
    13     START:
    14         mov AX,DATAS
    15         mov DS,AX   ;把需要比较的两个数字放入两个寄存器中
    16         
    17         xor ax,ax
    18         xor bl,bl
    19                     ;存放操作数的寄存器进行清0
    20         mov Ax,grade;待操作的数
    21         mov bl,0aH
    22         div bl       ;除以10
    23 
    24         and ax,00FFH
    25         cmp Ax,9
    26         ja default  
    27         cmp Ax,6
    28         jb default     
    29                     ;结果小6或者大于9则跳转到默认输出
    30         xor bx,BX   ;BX清0
    31         mov bl,09H  ;将bl设为9
    32         sub bx,ax   ;用09去减上面得到的结果(AX) 得链连地址表
    33         add bx,bx
    34         jmp ComTab[BX]
    35 
    36     default:
    37         lea dx,g5
    38         mov ah,09h
    39         int 21H     
    40         jmp exit
    41     coma:
    42         lea dx,g1
    43         mov ah,09H
    44         int 21H
    45         jmp exit
    46     comb:
    47         lea dx,g2
    48         mov ah,09H
    49         int 21H
    50         jmp exit
    51     comc:
    52         lea dx,g3
    53         mov ah,09H
    54         int 21H
    55         jmp exit
    56     comd:
    57         lea dx,g4
    58         mov ah,09H
    59         int 21H
    60         jmp exit
    61     exit:
    62         mov ah,4ch
    63         int 21H
    64 CODES ends
    65     end START
  • 相关阅读:
    黄金现货平台
    现货黄金交易中的黑平台
    删除WIN7系统的共享文件
    delphi 通过控件的handle取得控件
    delphi 句柄
    Delphi EVariantTypeCastError错误的解决方法
    【HTML5】Canvas 实现放大镜效果
    使用CSS3制作导航条和毛玻璃效果
    js原生创建模拟事件和自定义事件的方法
    基于react-native实现的博客园手机客户端强势升级
  • 原文地址:https://www.cnblogs.com/roseAT/p/10246139.html
Copyright © 2011-2022 走看看