如何更改程序集中变量的值 [英] How to change the value of a variable in assembly

查看:16
本文介绍了如何更改程序集中变量的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为我的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆