Assembly 汇编语言(embstide)-为什么寄存器值没有变化?

Assembly 汇编语言(embstide)-为什么寄存器值没有变化?,assembly,Assembly,我编写了以下汇编语言代码来实现10个数据数组中的冒泡排序,每个数据长度为16位。没有编译错误,但是当我逐行执行时,寄存器值不会改变 这是我编译程序时的“构建”窗口: .global _start 2 3 .text 4 _start: 5 0000 0910A0E3 mov r1, #9 6 0004 0920A0E3 mov r2, #9 7

我编写了以下汇编语言代码来实现10个数据数组中的冒泡排序,每个数据长度为16位。没有编译错误,但是当我逐行执行时,寄存器值不会改变

这是我编译程序时的“构建”窗口:

.global _start
   2               
   3               .text 
   4               _start:
   5 0000 0910A0E3  mov r1, #9
   6 0004 0920A0E3  mov r2, #9
   7               
   8               loop:
   9               
  10 0008 28309FE5  ldr r3,=dat1
  11 000c 0120A0E1  mov r2,r1
  12               
  13               loop2:
  14               
  15 0010 B040D3E1  ldrh r4,[r3]
  16 0014 B250D3E1  ldrh r5,[r3,#2]
  17 0018 050054E1  cmp r4,r5
  18 001c 005083C5  strgt r5,[r3]
  19 0020 024083C5  strgt r4,[r3,#2]
  20 0024 023083E2  add r3,r3,#2
  21 0028 012052E2  subs r2,r2,#1
  22 002c 0200001A  bne loop2
  23               
  24 0030 011051E2  subs r1,r1,#1
  25 0034 0000001A  bne loop
  26               
  27 0038 00000000  .data 
  28               dat1:
  29 0000 8597      .hword 0x9785
  30 0002 29A8      .hword 0xa829
  31 0004 3412      .hword 0x1234
  32 0006 6382      .hword 0x8263
  33 0008 34B2      .hword 0xb234
  34 000a 8709      .hword 0x0987
  35 000c 2314      .hword 0x1423
  36 000e 1792      .hword 0x9217
  37 0010 1111      .hword 0x1111
  38 0012 2143      .hword 0x4321
  39               
  40               
  41               .end
ARM GAS  C:\EmbestIDE\Bin\proj1\order.s    page 2

这与指令的存储位置有关吗/

寄存器值必须更改,至少pc必须更改,因为它必须在跨过上一条指令后显示下一条指令。“构建窗口”如清单所示,这是检查结果机器代码在输出文件中的外观的好方法。但在执行它之后,debugger中的反汇编窗口将显示真实内存和指令,因此您应该注意这一点,以防出现意外内存覆盖或意外跳转到代码之外的某个地方。如果您有一些工作示例,请尝试在调试器中比较,加载后会有什么不同。是的,只有pc会更改。