程序“[4176] char.exe: 本机”已退出,返回值为 0 (0x0)

使用VS2010运行程序,黑屏一闪而过,说程序“[4176] char.exe: 本机”已退出,返回值为 0 (0x0)


解决方法是:

在引用头文件时,加上#include "stdlib.h "

在return 0前加上system(“pause”)。

以下是使用x86汇编语言编写的程序: ``` section .data string db 80 ; 分配80字节的存储空间 prompt db "Please input a string (end with 0): ", 0 newline db 10, 0 ; 换行字符 section .text global _start _start: ; 输出提示信息 mov eax, 4 ; 系统调用号4表示输出 mov ebx, 1 ; 文件描述符1表示标准输出 mov ecx, prompt ; 要输出的字符串的首地址 mov edx, 32 ; 要输出的字符串的长度 int 0x80 ; 调用系统中断 ; 从键盘读入字符串 mov eax, 3 ; 系统调用号3表示输入 mov ebx, 0 ; 文件描述符0表示标准输入 mov ecx, string ; 读入的字符串存放的首地址 mov edx, 80 ; 最多读入80个字符 int 0x80 ; 调用系统中断 ; 处理输入的字符串 xor ebx, ebx ; ebx寄存器清零 xor ecx, ecx ; ecx寄存器清零 mov cl, byte [string] ; 获取字符串的第一个字符 mov bl, cl ; 备份字符 loop: cmp bl, 0 ; 判断是否到达字符串结尾 je end_loop cmp bl, 'a' ; 判断是否为小写字母 jb next_char cmp bl, 'z' ja next_char sub bl, 32 ; 将小写字母转换为大写字母 mov byte [string+ecx-1], bl ; 修改字符 next_char: inc ecx ; 继续处理下一个字符 mov bl, byte [string+ecx-1] ; 获取下一个字符 jmp loop end_loop: ; 输出处理后的字符串 mov eax, 4 ; 系统调用号4表示输出 mov ebx, 1 ; 文件描述符1表示标准输出 mov ecx, string ; 要输出的字符串的首地址 int 0x80 ; 调用系统中断 ; 输出换行符 mov eax, 4 ; 系统调用号4表示输出 mov ebx, 1 ; 文件描述符1表示标准输出 mov ecx, newline ; 要输出的字符串的首地址 int 0x80 ; 调用系统中断 ; 退出程序 mov eax, 1 ; 系统调用号1表示退出 xor ebx, ebx ; 返回值为0 int 0x80 ; 调用系统中断 ``` 程序的思路是先从键盘读入一个字符串,然后循环处理字符串中的每个字符,如果是小写字母,则将其转换为大写字母,最后输出处理后的字符串。程序以输入“0”来结束循环并退出
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值