谁来帮我看看这个汇编程序
题目:从设备数据端口、状态端口、控制端口(70H,71H,72H).从设备输入100B数据,存入buffer为首的地址缓冲区,如果启动1s后仍未完成一次输入,则视为超时显示出错信息。以下是我写的程序,但是老是报告Segmentation fault错误。高手指点下,明天就要交作业了。
- Assembly code
.section .data output: .asciz "TIME IS OUT , TERMINATE!" .section .bss .lcomm buffer, 100 .section .text .globl main main: #检测是否启动设备 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 EXIT TIMEOUT: pushl $output call printf addl $4, %esp EXIT: movl $1, %eax movl $0, %ebx int $0x80
oh,my lady gaga!
汇编。。。
神啊
汇编还不如门,待高手。。。
跟踪一下,看在哪儿出的错
段错误,看看你当前操作的段是哪个。