谁来帮我看看这个汇编程序
题目:从设备数据端口、状态端口、控制端口(70H,71H,72H).从设备输入100B数据,存入buffer为首的地址缓冲区,如果启动1s后仍未完成一次输入,则视为超时显示出错信息。以下是我写的程序,但是老是报告Segmentation fault错误。高手指点下,明天就要交作业了。
.section .dataoutput: .asciz "TIME IS OUT , TERMINATE!".section .bss .lcomm buffer, 100.section .text.globl mainmain: #检测是否启动设备NotStart: inb $0x72 , %al testb $0x1 , %al jz NotStart #设定循环计算器,每次传送4个字节 movl $25, %ecx movl $buffer,%ebx movl $1000, %edx #我假设循环1000次为1秒 #检测设备准备就绪,每次读取时都要检测READ:NotReady: decl %edx testl $1 , %edx jz TIMEOUT movl $0 , %eax inb $0x71 , %al #从71H端口读取状态 testb $0x1 , %al # 1 准备就绪 jz NotReady #读取数据信息 inl $0x70 , %eax movl %eax , %ebx incl %ebx loop READ jmp EXITTIMEOUT: pushl $output call printf addl $4, %espEXIT: movl $1, %eax movl $0, %ebx int $0x80