汇编网首页登录博客注册
zdpopup的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  十年磨一剑,我就不信不能学下去.
  • 『姓名』:达达
  • 『性别』:男『发送消息
  • 个人说明:从09年开始到2020年前,我一定一直深入写下去.
    只要每天多一点2020年再回首,不信不能提高到一个水平
  • 详细信息『加为好友』
学习动态
友情链接

[  even3   发表于  2013-05-16 20:47  ]

亲,你好。。。这边有一个汇编语言程序,但是就是不知道哪里出了问题,问了很多人,都不知道想麻烦您一下,能不能帮忙看看,真的很着急,后天就要课程设计答辩了。。。。真心感谢。。。
这是一个函数信号发生器的波形,有7个按键,按“1”键,产生锯齿波;按“2”键,产生三角波;按“3”键,产生方波;按“4”键,产生第一个正弦波。第五键是第二个正弦波,6、7键是调整前三个波的幅度。在示波器上显示。。。[泡泡:哭]
可是不管怎么运行这两个正弦波都无法正常出现,波形不稳定,并且有干扰,请问这是为什么。。。谢谢


CODE  SEGMENT
        ASSUME CS:CODE
START:        JMP START0
ADDR_0832   EQU   8000H        
C8255       EQU          0FF2BH        
PA8255            EQU   0FF28H        

AM DB 0FFH
START0:
        MOV        DX,C8255                        
        MOV        AL,90H             
        OUT     DX,AL                                   ;8255初始化
        MOV         DX,PA8255                                        
        IN        AL,DX                                                
        CMP        AL,0FFH                                   ;判断是否有按键按下
        JZ  START0                                       ;若无键,则跳转
        XOR  AL,0FFH
                                     ;对AL按位取反
A1:TEST AL,10H
JZ A2
MOV AM,80H
A2: TEST AL,20H
JZ START1
MOV AM,0FFH

START1:        
        TEST         AL,01H                                ;测试是不是第一个按键按下
        JZ         START2                                       ;如果不是则跳转到START2
        CALL        JUCHI                                    ;否则调用JUCHI子程序
        JMP        START0
START2:        
       TEST         AL,02H                                ;测试是不是第二个键按下
        JZ          START3
        CALL        SANJ
        JMP        START0
START3:        
        TEST         AL,04H                                 ;测试是不是第三个键按下
        JZ         START4
        CALL        FANG                    
        JMP        START0
START4: 
        TEST        AL,08H                             ;测试是不是第四个键按下
        JZ        START5
        CALL        SIN
        JMP        START0
        
START5: 
        TEST        AL,40H                             ;测试是不是第四个键按下
        JZ        START1
        CALL        SIN1
        JMP        START0
;*************锯齿波*****************
JUCHI     PROC  NEAR                     ;定义锯齿波过程
        MOV        DX,ADDR_0832       
        MOV        CX,10                                      ;设置循环次数        
 LP1:          MOV        AL,00H                    ;对AL赋初值
 STEP:  OUT          DX,AL                                                 
        INC           AL               ;执行加1操作
        CMP         AL,AM                      ;比较AL是不是为0FFH
        JNZ         STEP                          ;不是的话跳转到STEP
        LOOP         LP1                                  ;如果是的话跳转到LP1
        RET 
JUCHI ENDP
;**************三角波****************
SANJ   PROC         NEAR                                    ;定义三角波过程
        MOV    DX,ADDR_0832
        MOV        AL,00H                             ;给AL赋初值
        MOV        CX,10                                    ;设置循环次数
BEGAIN1:
        INC         AL                       ;执行加1操作 
        OUT         DX,AL
        CMP          AL,AM                               ;比较值是不是已满
        JNZ    BEGAIN1                              ;未满则跳转BEGAIN1
BEGAIN2:
        DEC         AL                                     ;执行减1操作
        OUT         DX,AL                                                
        CMP         AL,00H                                    ;比较是不是等于00H
        JNZ   BEGAIN2
        LOOP  BEGAIN1
        RET
SANJ ENDP

;**************方波*****************
FANG  PROC         NEAR        
        MOV          DX,ADDR_0832
        MOV         BX,10 
 LP2:        MOV        CX,0FFH
 BEGAIN3:
        MOV        AL,AM                                ;对AL赋值--高电平
        OUT        DX,AL                                        ;将AL值赋给DX所在的地址中
        LOOP        BEGAIN3                                 ;半周期设置        
        MOV         CX,0FFH
 BEGAIN4:
        MOV     AL,00H                                 ;对AL赋值--低电平
        OUT        DX,AL
        LOOP    BEGAIN4
        DEC        BX
        JNZ        LP2
        RET
FANG ENDP
;***************正弦波**************
SIN        PROC        NEAR
        MOV          DX,ADDR_0832
        MOV         BX,111
LP3:           LEA          SI,TAB                               ;将TAB地址赋给SI
        MOV         CX,111
NEXT1:  MOV        AL,[SI]                               ;将SI地址里面的内容给AL
        OUT        DX,AL
        INC     SI                                                        
        LOOP        NEXT1                                      ;到CX为0的时候结束跳转
        DEC        BX        
        JNZ        LP3                                             ;增加正弦波的周期数
        RET
SIN        ENDP
SIN1    PROC        NEAR
        MOV          DX,ADDR_0832
        MOV         BX,32
LP4:           LEA          SI,TAB1                               ;将TAB地址赋给SI
        MOV         CX,32
NEXT2:  MOV        AL,[SI]                               ;将SI地址里面的内容给AL
        OUT        DX,AL
        INC     SI                                                        
        LOOP        NEXT2                                      ;到CX为0的时候结束跳转
        DEC        BX        
        JNZ        LP4                                             ;增加正弦波的周期数
        RET
SIN1        ENDP        
TAB     DB 80H,85H,89H,8DH
        DB 99H,9FH,0A2H,0ABH
        DB 0B1H,0BAH,0BFH,0C2H
        DB 0C7H,0CCH,0D1H,0D6H
        DB 0DAH,0DFH,0E3H,0E7H
        DB 0EAH,0EEH,0EFH,0F2H
        DB 0F8H,0F9H,0FAH,0FBH
        DB 0FDH,0FFH,0FFH,0FFh       
        DB 0FDH,0FBH,0FAH,0F9H
        DB 0F5H,0F2H,0F1H,0EEH
        DB 0E9H,0E3H,0E1H,0DEH        
        DB 0C5H,0BFH,0BAH
        DB 0AEH,0ABH,0A2H,9CH
        DB 96H, 93H,8DH, 86H
        DB 7CH,79H,6CH,69H
        DB 66H,63H,5AH,57H
        DB 4CH,48H,40H,3AH
        DB 38H,30H,2EH,29H
        DB 25H,22H,1EH,1AH
        DB 15H,13H,0EH,0DH
        DB 09H,08H,07H,00H
        DB 02H,04H,05H,08H
        DB 0AH, 0EH,11H,13H
        DB 16H, 1AH,1EH,22H
        DB 29H,2BH,30H,35H
        DB 3AH,3DH,43H,48H
        DB 51H,57H,5AH,60H
        DB 69H,6CH,6FH,80H
TAB1    DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH 
        DB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96H
        DB 80H,66H,4CH,38H,25H,15H,09H,04H
        DB 00H,04H,09H,15H,25H,38H,4EH,66H        
CODE         ENDS
        END        START

[  pascale   发表于  2010-01-01 08:40  ]

别看谭浩强的书, 这本书变得其实不好知识他比较全罢了。 他对编写C语言的思想和老美的差远了。 我建议你先看一本叫《A First Book of ANSI C》的书非常的不错,他不仅教会了你C语言还让你知道如何运用C来解决问题。
这本书比较基础再给你推荐几本书参考看。
《Expert C Programming》
《C Traps and Pitfalls》
《Pointers on C》
《C标准库》

页码数(1):  1 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码