xulei_002 2019-06-04 14:16 采纳率: 0%
浏览 2359

利用DOS系统功能调用编写汇编程序,在屏幕上显示自己学号的后4个数字符号

利用DOS系统功能调用编写汇编程序,在屏幕上显示自己学号的后4个数字符号。例如,你的学号如果是20191234,则在屏幕上显示出‘1234’。具体要求如下:
(1)编写出完整的汇编语言程序;
(2)利用宏汇编程序MASM和连接程序LINK对所编写的程序进行汇编和连接,生成可执行文件,并在DOS下运行程序。
(3)打印出相应的列表文件(后缀lst的文件)清单,并对调试运行结果进行截图,以证明程序调试成功。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 02:21
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    由于您没有提供具体的汇编语言环境,我将为您提供一个基于MS-DOS的示例程序,该程序使用了宏汇编程序MASM和链接程序LINK来实现屏幕显示功能。此外,我还将提供一个简单的调试截图。

    步骤 1: 编写汇编程序

    section .data
        prompt db '请输入您的学号: ', 0
        number db 4 dup ('$')
    
    section .bss
        screen resd 8
    
    section .text
        global _start
    
    _start:
        ; 输入学号并处理错误
        mov eax, 3      ; 打印屏幕指令
        mov ebx, 1      ; 输出设备(标准输出)
        mov ecx, prompt  ; 指向提示字符串的指针
        int 0x80        ; 调用打印机函数
    
        ; 提供一个输入字段
        mov eax, 4      ; 获取屏幕缓冲区指令
        mov ebx, 1      ; 输出设备(标准输出)
        mov ecx, number  ; 指向要填充的内存区域的指针
        mov edx, 4       ; 字符数组大小
        int 0x80        ; 调用键盘输入函数
    
        ; 检查输入的有效性
        cmp [screen], '$'
        je display_number
    
    display_number:
        ; 显示学号
        mov eax, 4      ; 设置屏幕缓冲区指令
        mov ebx, 1      ; 输出设备(标准输出)
        mov ecx, number  ; 指向要显示的内存区域的指针
        mov edx, 4       ; 字符数组大小
        int 0x80        ; 调用键盘输入函数
    
    exit:
        ; 清除屏幕缓冲区
        mov eax, 35     ; 清屏指令
        mov ebx, 1      ; 输出设备(标准输出)
        int 0x80        ; 调用打印机函数
    
        ; 结束进程
        mov eax, 1      ; 程序结束标志
        xor ebx, ebx   ; 返回值为0
        int 0x80        ; 调用系统调用
    
    ; 连接和解译程序
    .link:
        ; 连接到MASM和LINK
        call link_dos
        call main_dos
    
    .link.dos:
        ; 在MASM中连接和编译程序
        call masm_compile
    
    main_dos:
        ; 在DOS环境下运行程序
        call dos_run
    

    步骤 2: 调试截图

    由于我无法直接查看或提供截图,请尝试以下步骤:

    1. 将上述汇编代码保存到一个文件中。
    2. 使用MASM和LINK编译这个文件。
    3. 执行生成的可执行文件。
    4. 运行程序时,确保有足够的时间让程序完成并打印内容。
    5. 从控制台查看输出,确认是否正确显示了学号的后四位。

    请注意,这只是一个基本示例,实际应用可能需要更复杂的输入验证、异常处理以及优化性能等额外考虑。

    评论

报告相同问题?