鱼C论坛

 找回密码
 立即注册
查看: 305|回复: 1

[汇编作业] 求助

[复制链接]
发表于 2023-11-20 08:43:43 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 liuyanjun 于 2023-11-21 10:06 编辑

求助,汇编语言利用循环指令计算任意三角形面积,要求三角形的底和高,通过键盘输入,面积值能够显示输出(用ASM软件进行编译的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-20 19:22:32 | 显示全部楼层
  1. sh-5.2$ cat main.s
  2.     .section    .text

  3. # long long atoq(const char *ptr);
  4. atoq:
  5.     xorq    %rax, %rax
  6.     xorq    %rcx, %rcx
  7. 1:  movb    (%rdi), %cl
  8.     cmpb    $'0', %cl
  9.     jb      1f
  10.     cmpb    $'9', %cl
  11.     ja      1f
  12.     subq    $'0', %rcx
  13.     movq    $10, %rdx
  14.     mulq    %rdx
  15.     addq    %rcx, %rax
  16.     incq    %rdi
  17.     jmp     1b
  18. 1:  movq    %rdi, %rdx
  19.     retq

  20. # long long qtoa(char *ptr, long long value);
  21. qtoa:
  22.     movq    %rsi, %rax
  23.     movq    %rdi, %rsi
  24.     movq    $10, %rcx
  25. 1:  xorq    %rdx, %rdx
  26.     divq    %rcx
  27.     addq    $'0', %rdx
  28.     movb    %dl, (%rdi)
  29.     incq    %rdi
  30.     cmpq    $0, %rax
  31.     jne     1b
  32.     movq    %rdi, %rax
  33.     subq    %rsi, %rax
  34.     decq    %rdi
  35. 1:  movb    (%rdi), %dh
  36.     movb    (%rsi), %dl
  37.     movb    %dh, (%rsi)
  38.     movb    %dl, (%rdi)
  39.     incq    %rsi
  40.     decq    %rdi
  41.     cmpq    %rsi, %rdi
  42.     ja      1b
  43.     retq

  44.     .global     _start
  45. _start:
  46.     subq    $1024, %rsp

  47.     movq    $0, %rax    # sys_read
  48.     movq    $0, %rdi    # stdin
  49.     movq    %rsp, %rsi  # buf
  50.     movq    $1023, %rdx # count
  51.     syscall

  52.     # buf[--count] = '\0';
  53.     decq    %rax
  54.     movb    $0, (%rsp, %rax)

  55.     movq    %rsp, %rdi
  56.     callq   atoq
  57.     movq    %rax, %r12
  58.     movq    %rdx, %rdi
  59.     incq    %rdi
  60.     callq   atoq
  61.     movq    %rax, %r13

  62.     movq    %r12, %rax
  63.     mulq    %r13

  64.     movq    $2, %rcx
  65.     divq    %rcx

  66.     movq    %rsp, %rdi
  67.     movq    %rax, %rsi
  68.     callq   qtoa

  69.     movb    $'\n', (%rsp, %rax)
  70.     incq    %rax
  71.     movq    %rax, %rcx

  72.     movq    $1, %rax    # sys_write
  73.     movq    $1, %rdi    # stdout
  74.     movq    %rsp, %rsi  # buf
  75.     movq    %rcx, %rdx  # count
  76.     syscall

  77. 1:  movq    $60, %rax   # sys_exit
  78.     xorq    %rdi, %rdi  # error_code
  79.     syscall
  80.     jmp     1b
  81. sh-5.2$ as -g -o main.o main.s
  82. sh-5.2$ ld -o main main.o
  83. sh-5.2$ ./main
  84. 10 20
  85. 100
  86. sh-5.2$ ./main
  87. 19 8
  88. 76
  89. sh-5.2$ ./main
  90. 19 7
  91. 66
  92. sh-5.2$
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 12:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表