Assembly 如何在NASM中打印8位值

Assembly 如何在NASM中打印8位值,assembly,x86,nasm,Assembly,X86,Nasm,很抱歉打扰我的导师们。最近几天我发布了一些问题。他们伸出了手来帮助我。 通过在x86机器上使用Ubuntu11.04中的NASM,最近我在工作中发现了另一个困惑。它是“如何打印8位值”? 假设我的代码片段如下所示: section .data var db "string" section .text global main main: nop xor ebx,ebx mov dl

很抱歉打扰我的导师们。最近几天我发布了一些问题。他们伸出了手来帮助我。 通过在x86机器上使用Ubuntu11.04中的NASM,最近我在工作中发现了另一个困惑。它是“如何打印8位值”? 假设我的代码片段如下所示:

    section .data
         var db "string"
    section .text
         global main
    main:
         nop
         xor ebx,ebx

         mov dl,byte[var+ebx]
         mov al, dl  ; setting to AL the ASCII character to write
         mov bh, 0   ; setting the page number to 0 (all in the same page)
         mov bl, 7   ; setting to bl the foreground pixel color
         mov ah, 0xE ; INT10 E sub mode --> Write Text in Teletype Mode
         int 10      ; "calling" to the interrupt.

         nop
现在,我只想打印dl。上述代码使用了猫的@Shmil提示。这就产生了分割错误。我们如何解决这个问题


提前感谢您。

在linux上,您可以使用putchar:

        global main
        extern putchar

        section .data
        var db "string"

        section .text
main:
         mov ebx, 0  ; index
         mov dl, [var + ebx]
         push edx
         call putchar
         add esp, 4
         ret

要调用需要一个字符的函数,需要推送一个完整的字。该函数将使用最低有效字节。

在linux上,您可以使用putchar:

        global main
        extern putchar

        section .data
        var db "string"

        section .text
main:
         mov ebx, 0  ; index
         mov dl, [var + ebx]
         push edx
         call putchar
         add esp, 4
         ret

要调用需要一个字符的函数,需要推送一个完整的字。该函数将使用最低有效字节。

您可以使用C运行时函数吗?@ShmilTheCat:不。我知道我不能在这里使用,也可以使用。出于这个原因,我在问help@AntoineMathys:你好,先生!我既不在dos下工作,也不在windows下工作。我在用Ubuntu11.04。你能使用C运行时函数吗?@ShmilTheCat:不,我知道我不能在这里使用它。出于这个原因,我在问help@AntoineMathys:你好,先生!我既不在dos下工作,也不在windows下工作。我正在使用Ubuntu11.04。我想部分问题是没有使用C运行时函数。。。见评论above@Antoine马蒂斯:非常感谢你,导师。它解决了我的问题。我真的很感谢你。我认为问题的一部分不是使用C运行时函数。。。见评论above@Antoine马蒂斯:非常感谢你,导师。它解决了我的问题。我真的很感谢你