我想缩短或以某种方式提高自己的汇编程序

编程入门 行业动态 更新时间:2024-10-18 08:28:55
本文介绍了我想缩短或以某种方式提高自己的汇编程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我已经创建了打印从1到1000的整数无5.印刷倍数它工作正常,但我想以某种方式缩短我的code或使其以任何方式可能更好汇编程序。我是新来组装,这是我第一次创建一个使用ARMsim程序。

.EQU SWI_PrStr,0×69.EQU SWI_PrInt,0x6b.EQU标准输出,1.EQU SWI_EXIT,为0x11。全球_start开始:MOV R5,#1MOV R6,#1MOV R7,#1000LOOPHERE:CMP R5,R7BLE LOOPBODY乙LOOPDONELOOPBODY:CMP R6,#5BLT LOOPIFMOV R6,#0乙LOOPNEXTLOOPIF:MOV R0,#StDoutMOV R1,R5SWI SWI_PrIntLDR R1,= EOLSWI SWI_PrStr乙LOOPNEXTLOOPNEXT:ADD R5,R5,#1ADD R6,R6,#1乙LOOPHERELOOPDONE:SWI SWI_EXIT。数据EOL:.asciz\\ n。结束

解决方案

关键是使用条件指令,使得ARM汇编从其他架构完全不同。

启动:    MOV R0,#StDout    MOV R5,#0;主计数器    MOV R4,#5,模5计数器循环:    加R5,#1    潜艇R4,#1;更新计数器    moveq R4,#5    movne R1,R5    猪SWI_PrInt;打印;如果不倍数5    ldrne R1,= EOL    猪SWI_PrStr    CMP R5,#1000;循环播放,直到我们到达1000    BNE循环

i have created an assembly program that prints integers from 1 to 1000 without printing multiples of 5. it works fine but i would like to somehow shorten my code or make it better in any way possible. i am new to assembly and this is my first time creating a program using ARMsim.

.equ SWI_PrStr, 0x69 .equ SWI_PrInt, 0x6b .equ StDout, 1 .equ SWI_EXIT, 0x11 .global _start start: MOV R5, #1 MOV R6, #1 MOV R7, #1000 LOOPHERE: CMP R5, R7 BLE LOOPBODY B LOOPDONE LOOPBODY: CMP R6, #5 BLT LOOPIF MOV R6, #0 B LOOPNEXT LOOPIF: MOV R0, #StDout MOV R1, R5 swi SWI_PrInt ldr R1, =EOL swi SWI_PrStr B LOOPNEXT LOOPNEXT: ADD R5, R5, #1 ADD R6, R6, #1 B LOOPHERE LOOPDONE: swi SWI_EXIT .data EOL: .asciz "\n" .end

解决方案

The key is to use the conditional instructions that makes ARM assembly so different from other architectures.

start: mov r0, #StDout mov r5, #0 ;Main Counter mov r4, #5 ;Modulo-5 counter loop: add r5, #1 subs r4, #1 ;Update counters moveq r4, #5 movne r1, r5 swine SWI_PrInt ;Print number if not multiple of 5 ldrne r1, =EOL swine SWI_PrStr cmp r5, #1000 ;Loop until we reach 1000 bne loop

更多推荐

我想缩短或以某种方式提高自己的汇编程序

本文发布于:2023-11-08 20:20:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1570356.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自己的   汇编程序   我想   或以   方式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!