Re: [問題] 執行時出現NTVDM CPU 已經遇到不合法的 …
我和原po遇到同樣的問題
本來也是按一下指定的熱鍵(設為f10)會跳出那個視窗
後來我在display那裡修改之後就變成按兩次會這樣,
據說熱鍵enter熱鍵會有奇怪的事發生……
然後這題變成bouns了,貼程式碼上來不會有問題吧?
TITLE test1 (test.asm)
; Program Description:
; Author:
; Date Created:
; Last Modification Date:
CR EQU 0dh
LF EQU 0ah
.model small
.DATA
act BYTE 0
beginpos BYTE ?
str_store BYTE ' a',16 dup('$')
leng_store WORD 0
str_out1 BYTE 'HotKey Test!',0
.CODE
start: jmp init
main:
sti
push bp
mov bp, sp
push ax
push bx
push cx
push dx
push si
push di
push ds
getkey:
mov ax, @data
mov ds, ax
in al, 60h
cmp al, 44h
je display
;cmp al, 14h
;je backspace
cmp al, 1ch
je _enter
;cmp al, 39
;je space
store:
cmp act, 00h
jne readc
mov act, 01h
mov ah, 03h
mov bh, 00h
int 10h
mov beginpos, dl
readc:
jmp _exit
_enter:
cmp act, 01h
jne _nothing
mov ah, 03h
mov bh, 00h
int 10h
sub dl, beginpos
mov cl, dl
mov ch, 0
mov leng_store, cx
mov dl, beginpos
mov si, 0
nextchar:
mov ah, 02h
int 10h
mov ah, 08h
int 10h
mov str_store[si], al
mov ah, 02h
inc dl
inc si
loop nextchar
mov act, 00h
_nothing:
jmp _exit
display:
cmp act, 01h ;就是加接下來這兩行,也就是說
jne _exit ;如果什麼都沒有打就什麼事也不會發生
mov ah, 09h
mov dx, offset str_store
int 21h
_exit:
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
pop bp
jmp cs:[old_int9]
old_int9 DWORD ?
init:
mov ax, 3509h
int 21h
mov ax, @CODE
mov ds, ax
mov word ptr old_int9, bx
mov word ptr old_int9+2, es
mov dx, offset main
mov ax, 2509h
int 21h
mov ah, 62h
int 21h
mov dx, SEG zseg
sub dx, bx
mov ax, 3100h
int 21h
.STACK
zseg SEGMENT
zseg ENDS
END start
--
★ 辰星! 五 歡迎加入五行戰鬥牌的奇幻世界!
★ ★ 太白! 歲星! 星 官方網站:(內有討論區)
★★ 鎮星!熒惑! 連 http://cfe.myweb.hinet.net/
「當蒼茫天穹中 那並非最閃亮 珠 PTT台大社版:NTU-CFE
但卻最純淨的五顆星 連成一線時,!
天與地的共鳴 將永不止歇,其力量可至無限。」 ψrexkimta
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.223.155
ASM 近期熱門文章
PTT數位生活區 即時熱門文章