汇编程序帮助
我有一个程序应该清除屏幕并打印我的名字,然后换行并再次打印我的名字。但是当我运行它时什么也没有显示。只是程序正常终止。我在 Windows 命令提示符下使用调试来执行此操作。
call 010E
call 0125
call 012D
call 0125
int 20
push ax #clearscreen(010E)
push bx
push cx
push dx
xor al, al
xor cx, cx
mov dh, 18
mov dl, 4f
mov bh, 07
mov ah, 06
int 20
pop dx
pop cx
pop bx
pop ax
ret
mov dx, 0200 #printline(0125)
mov ah, 09
int 21
ret
push ax #new line( 012D)
push dx
mov ah, 02
mov dl, 0d
int 21
mov dl, 0a
int 21,
pop dx
pop ax
ret
DB' Antarr$ #(0200)
I have a program that is supposed to clear the screen and print my name, then new line and print my name again. but when i run it nothing shows up. just program teminated normally. I'm doing this in windows command prompt using debug.
call 010E
call 0125
call 012D
call 0125
int 20
push ax #clearscreen(010E)
push bx
push cx
push dx
xor al, al
xor cx, cx
mov dh, 18
mov dl, 4f
mov bh, 07
mov ah, 06
int 20
pop dx
pop cx
pop bx
pop ax
ret
mov dx, 0200 #printline(0125)
mov ah, 09
int 21
ret
push ax #new line( 012D)
push dx
mov ah, 02
mov dl, 0d
int 21
mov dl, 0a
int 21,
pop dx
pop ax
ret
DB' Antarr$ #(0200)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的第一个也是最明显的错误是使用
clearscreen
函数调用int 20
(终止程序),而不是 BIOS 中断int 10
。编辑:但是你为什么不使用汇编器呢?例如,尝试NASM。另外,该程序: Tech,将帮助您找到正确的 DOS 或 BIOS 功能。
Your first and most obvious error is calling
int 20
, Terminate Program, instead of BIOS interruptint 10
withing theclearscreen
function.EDIT: but why don't you use an assembler for this? Try NASM for example. Also, this program: Tech, will help you with finding the right DOS or BIOS function.
您正在尝试调用硬件中断(int 20)。由于受保护模式的影响,您将无法进入模式 20。换句话说,Windows 将阻止您直接与硬件通信。
You are trying to call a hardware interrupt (int 20). Because of protected mode, you're not going to be able to enter mode 20. In other words, Windows is going to block you from talking to the hardware directly.