我想将0到9之间的数字放到400h到409h的存储单元中。 例如,在400h - > 0(放0)和401h - > 1(放1)..... 409h(放9)。 到目前为止,这是我的代码:(我不知道它是否有效)
IDEAL
MODEL small
STACK 100h
DATASEG
;----------
;----------
CODESEG
start:
mov ax , @data
mov ds , ax
mov es, ax
;----------
mov si , 400h
mov cx , 10
mov al , 0
agian:
mov [si],al
inc si
inc al
loop agian
;--------
exit:
mov ax,4c00h
int 21h
END start
答案 0 :(得分:2)
如果你的程序有效,有一种非常简单的方法可以查看。只需在视频内存中写入值即可。这样你就会知道它是否有效。
start:
mov ax, 0B800h ;NEW
mov ds, ax
mov es, ax
;----------
mov si, 400h
mov cx, 10
mov al, 48 ;NEW value 0 -> character 0
agian:
mov [si], al
add si, 2 ;NEW 1 character occupies 2 bytes in video memory
inc al
loop agian
mov ah,00h ;NEW wait for a keystroke so you can actually see
int 16h ;NEW ... the output
如果您可以花时间学习使用DOS实用程序 DEBUG.EXE 。除此之外,它还允许您单步执行程序并查看内存。
答案 1 :(得分:1)
检查ASM代码是否按预期方式运行的最简单方法是在调试器中运行它。如果您在Windows上运行,OllyDbg 2将是一个很好的候选者 - 它将显示寄存器的当前值,堆栈状态等,以便您可以看到它们在您步骤时如何更改通过你的代码。您也可以修改OllyDbg内部的代码。
您可以使用int 3
指令在代码中编写断点,或使用调试器在运行时放置断点。