• 汇编:采用址表的方法编写程序实现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
  • 相关阅读:
    java encoding
    [转]shell 变量的作用域
    [转] shell :解析json的命令-jq
    [转] Linux user-space Atomic Operations && GCC Atomic builtins
    [转]reference counting
    [转]memory order,memory barrier,原子操作
    [转]c语言volatile 关键字
    OCF介绍
    [转]计算机存储 cache介绍
    [转] linux IO
  • 原文地址:https://www.cnblogs.com/roseAT/p/10246139.html
Copyright © 2020-2023  润新知