【发布时间】:2012-08-22 05:12:15
【问题描述】:
我正在编写一个简单的 TSR 程序,但出现错误。
我尝试通过Int 90H 执行它,但由于某种原因它崩溃了。
我是 TSR 新手,所以问题可能很简单。
TSR:
; Copy non-small letters
.model tiny
.code
ORG 100H
start:
push bp
push si
push cx
push bx
; save registers
mov bp, sp
sub sp, cx
sub sp, 1 ; for $
mov di, bp
mov si, bx
copy:
cmp [si], 'a'
jl bad
; not small letter
cmp [si], 'z'
jg bad
; not small leter
; good
mov ax, [si]
mov [bp], ax
dec bp
bad:
inc si
loop copy
mov [bp-1],'$'
mov ah, 09
mov dx, di
int 21H
install:
mov al, 90H
mov ah, 25H
mov dx, offset start
int 21H
finish:
pop bx
pop cx
pop si
pop bp
; ^ restore registers
mov ah, 31
int 21H
iret
; end
end start
主程序:
.model small
.stack 64
.data
string db "Hey There"
.code
start:
lea bx, string
mov cx, 09
int 90H
; end
mov ah, 4ch
int 21H
end start
你知道我的程序为什么会崩溃吗?
【问题讨论】:
-
我下周要考试,我对 TSR 一无所知.. 我 M-U-S-T 你的帮助!!
-
等等,这是给学校的吗?寻找更好的老师(或更好的学校)。自 Windows 95 发布以来,TSR 在功能上已经过时。过去 15 多年没有人(除了你的老师?)关心它们。
-
不.. 这是为了大学。我也真的不在乎,我没有使用 Assembly ,但此刻我必须知道这一点。我不想第二次考试不及格并再次参加这门课程。请大家 - 这对我来说真的很重要。
-
@duskwuff 显然,DOS(例如 Linux 上的 DosBox)和 Turbo C++ 仍在印度的学校中用于教授编程。
-
这是一个学习一些 x86 汇编、中断和 TSR 的机会。