下面的汇编语言程序怎么分析

时间:2022-05-02 03:28:54
STACK  SEGMENT STACK
       DB 1024 DUP(0)
STACK  ENDS
DATA   SEGMENT
TABF   DW   262,350,352,350,441,393,350,393,441
       DW   350,352,441,525,589,588,589,525,441
       DW   440,350,393,350,393,441,350,293,294,262
       DW   350,589,525,441,440,350,293,350,393,589
       DW   525,441,440,525,589,700,525,441,440,350
       DW   393,350,393,441,350,294,292,262,350,0
TABT   DB   4,4,6,2,4,4,6,2,4,4
       DB   6,2,4,4,12,1,3,6,2
       DB   4,4,6,2,4,4,6,2,4,4
       DB   12,4,6,2,4,4,6,2,4,4
       DB   6,2,4,4,12,4,6,2,4,4
       DB   6,2,4,4,6,2,4,4,12
DATA   ENDS
CODE   SEGMENT 
       ASSUME CS: CODE,DS: DATA
BEG:   MOV    AX,DATA
       MOV    DS,AX
OPEN:  IN     AL,61H
       OR     AL,00000011B
       OUT    61H,AL 
AGA:   MOV    SI,OFFSET TABF 
       MOV    DI,OFFSET TABT 
LAST:  CMP    WORD PTR[SI],0 
       JE     AGA  
       MOV    DX,12H
       MOV    AX,34DEH
       DIV    WORD PTR[SI]  
       OUT    42H,AL        
       MOV    AL,AH
       OUT    42H,AL
       CALL   WAITF
       ADD    SI,2
       INC    DI     
       MOV    AH,1
       INT    16H  
       JZ     LAST 
COLSE: IN     AL,61H
       AND    AL,11111100B
       OUT    61H,AL  
       MOV    AH,4CH
       INT    21H
WAITF  PROC NEAR
       PUSH AX
WAITF1:
       IN   AL,61H
       AND  AL,10H 
       CMP  AL,AH
       JE   WAITF1
       MOV  AH,AL
       LOOP WAITF1 
       POP  AX
       RET
WAITF  ENDP
CODE   ENDS
       END  BEG
      
                                           

9 个解决方案

#1


这个是单片机的吧。嘿嘿。
楼主...........

#2


应该还是AVR单片机的吧

#3


一句一句的看呗 把功能结构整清楚

#4


X86/PC的......不过我也不懂......

#5


直接打电话问高手,^_^

#6


好像是奏乐程序...........猜的,,,,,

#7


关注

#8


86的汇编吧,好像是读键奏乐的,已经忘了21h中断什么的作用了!

#9


我知道汇编语言,嘿嘿  具体的我也不是很清楚

#1


这个是单片机的吧。嘿嘿。
楼主...........

#2


应该还是AVR单片机的吧

#3


一句一句的看呗 把功能结构整清楚

#4


X86/PC的......不过我也不懂......

#5


直接打电话问高手,^_^

#6


好像是奏乐程序...........猜的,,,,,

#7


关注

#8


86的汇编吧,好像是读键奏乐的,已经忘了21h中断什么的作用了!

#9


我知道汇编语言,嘿嘿  具体的我也不是很清楚