如何更改程序集中变量的值 [英] How to change the value of a variable in assembly
本文介绍了如何更改程序集中变量的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为我的MikeOS端口编写一些代码。它是用NASM x86 16位汇编编写的。我正在尝试将我设置的变量更改为不同的值。它编译时没有错误,但当我调用os_print_string时,它会打印一些奇怪的ASCII字符。代码如下:
BITS 16
ORG 32768
%INCLUDE "mikedev.inc"
start:
mov si, test2 ; give si test 2 value
mov [test1], si ; give test 1 si's value
mov si, test1 ;now give test1's value to si
call os_print_string ; and print
test2 db "adsfasdfasdf", 0
test1 db "asdf", 0
这个代码是多余的,我知道。我只需要关于如何更改变量的值的n个解释。提前解围!
-Ryan
推荐答案
另一个很好的老问题,这是你等待了6.83年的答案:)
BITS 16
ORG 32768
%INCLUDE "mikedev.inc"
start:
mov si, test2
mov di, test1
.loop:
lodsb
or al, al
je .done
stosb
jmp .loop
.done:
mov si, test1
call os_print_string
test2 db "adsfasdfasdf", 0
test1 db "asdf ", 0
确保字符数组的长度相同,否则将中断^^
但我相信你现在知道了^^
这篇关于如何更改程序集中变量的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文