如何在NASM中打印8位值

时间:2013-03-15 09:12:21

标签: assembly x86 nasm

我很抱歉打扰了我的导师。过去几天我发布了一些问题。他们伸出援助之手。 通过在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 The Cat的提示。它会引起分段错误。我们如何解决这个问题?

提前感谢你。

1 个答案:

答案 0 :(得分:1)

在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

要调用一个需要char的函数,你可以推送一个完整的单词。该函数将使用最低有效字节。