0

Gnu asで「Hello World」を管理しました!

で、次はprint 1 to 10でしょ?(多分ルビーで)

現時点では、A に続いて B を印刷できれば幸いです。これが私の持っているものです。

.section .text
  .globl _start

_start:
  # Print A
  movl  $4,%eax
  pushl $0x41
  movl  %esp,%ecx        # Would rather movl $0x41,%ecx
  movl  $1,%ebx
  movl  $1,%edx
  int   $0x80

  # Closely followed by B
  movl  $4,%eax
  incl  (%esp)           # Rather incl(%ecx) here
  movl  %esp,%ecx
  movl  $1,%ebx
  movl  $1,%edx
  int   $0x80

  movl  $1,%eax
  movl  $0,%ebx
  int   $0x80

実際には機能しますが、私の質問は、なぜできないのかということです

  movl  $0x41,%ecx

まず、そして次に

  incl (%ecx)

少し後で?

4

1 に答える 1

0

sys_write の場合、%ecx は、出力する文字に「なる」のではなく、文字がメモリ内に存在する場所を指す必要があります。"incb" は "incl" よりも正しいかもしれません。1 バイトだけインクリメントするためです。"(%esp)" または "(%ecx)" は、この時点で同じ場所を指しているため、どちらでも機能するはずです。メモリへのポインタではなく、メモリの「内容」をインクリメントしていることに注意してください。

ベスト、フランク

于 2012-07-17T03:05:52.813 に答える