**已关闭。**此问题需要debugging details。目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
6天前关闭
Improve this question
section .data
station dd 0
pressure dd 0
choice db 0
; Strings for prompts and messages
prompt_station db "Enter the station number: ", 0
prompt_pressure db "Enter the gas pressure : ", 0
message_invalid db "Are you sure you entered the right pressure? Please check again.", 10, 0
message_high db "Station %d with gas pressure %d Pascal is too high and dangerous. There is a gas leakage in this station.", 10, 0
message_risk db "Station %d with gas pressure %d Pascal could be at risk of gas leakage. There might be gas leakage in this station.", 10, 0
message_normal db "Station %d with gas pressure %d Pascal is normal. There is no gas leakage in this station.", 10, 0
separator db "---------------------------------------------------------------------", 10, 0
prompt_continue db "\nDo you want to continue? ", 0
message_precautions db "- PRECAUTIONS FOR GAS LEAKAGE - ", 10, "1. Stop the gas flow at the container (shut off valves).", 10, "2. Turn off all naked flames and eliminate all sources of ignition.", 10, "3. Do not turn electrical switches ON or OFF.", 10, "4. If leak is indoors, open all windows and doors, to disperse the gas.", 10, "5. If the leak cannot be stopped or a significant leak has occurred, evacuate the premises.", 10, 0
section .text
global _start
_start:
; Input station number
mov eax, 4 ; sys_write
mov ebx, 1 ; STDOUT
mov ecx, prompt_station
mov edx, prompt_station_len
int 0x80
mov eax, 3 ; sys_read
mov ebx, 0 ; STDIN
mov ecx, station
mov edx, 4 ; Read up to 4 bytes (assuming integer input)
int 0x80
; Input gas pressure (similar code as above for pressure input)
; Evaluate pressure and print messages (similar logic as C++)
; Print separator
; (Similar code as C++ to print separator)
; Prompt and read choice
; (Similar code as C++ for choice input)
; Check choice and continue or exit
; (Similar code as C++ for choice validation and continuation)
exit_program:
; Print precautions or exit message
; (Similar code as C++ to print precautions or exit message)
; Exit program
mov eax, 1
xor ebx, ebx
int 0x80
section .data
prompt_station_len equ $ - prompt_station
; Define lengths of other strings/messages here if necessary
我是新来的,我不知道如何修复错误
1条答案
按热度按时间pxyaymoc1#
一个明显的错误是你计算 prompt_station_len 的方式。
包含此
equ
的行必须紧跟在相关消息之后。$
符号表示出现该符号的行的开始。并且该特定开始必须与消息的结尾一致:型
因为 sys_write 是“长度驱动”的,所以不应该包含终止零:
删除零终止符:
型
或者减去1:
型
对不起,但是你对“添加数组和循环”的关注没有进一步的解释!