当前位置: 首页 > 知识库问答 >
问题:

汇编语言中的循环(emu8086)

上官德寿
2023-03-14

我想将高级语言中的简单循环转换为汇编语言(对于emu8086),比如说,我有以下代码

 for(int x = 0; x<=3; x++)
 {
  //Do something!
 }

 int x=1;
 do{
 //Do something!
 }
 while(x==1)

 while(x==1){
 //Do something
 }

如何在emu8086中执行此操作?

共有2个答案

勾岳
2023-03-14
Do{
   AX = 0
   AX = AX + 5
   BX = 0
   BX= BX+AX 
} While( AX != BX)

Do-while循环始终在每次迭代结束时检查循环的条件。

常智勇
2023-03-14

C 中的 for 循环:

for(int x = 0; x<=3; x++)
{
    //Do something!
}

8086汇编器中的相同循环:

        xor cx,cx   ; cx-register is the counter, set to 0
loop1   nop         ; Whatever you wanna do goes here, should not change cx
        inc cx      ; Increment
        cmp cx,3    ; Compare cx to the limit
        jle loop1   ; Loop while less or equal

如果您需要访问索引 (cx),这就是循环。如果你只想做一些0-3=4次的东西,但你不需要索引,这会更容易:

        mov cx,4    ; 4 iterations
loop1   nop         ; Whatever you wanna do goes here, should not change cx
        loop loop1  ; loop instruction decrements cx and jumps to label if not 0

如果您只想经常执行一条非常简单的指令,也可以使用一个汇编指令,它将只对该指令进行硬编码

times 4 nop

C语言中的Do-while循环:

int x=1;
do{
    //Do something!
}
while(x==1)

汇编器中的相同循环:

        mov ax,1
loop1   nop         ; Whatever you wanna do goes here
        cmp ax,1    ; Check wether cx is 1
        je loop1    ; And loop if equal

C 中的 while 循环:

while(x==1){
    //Do something
}

汇编器中的相同循环:

        jmp loop1   ; Jump to condition first
cloop1  nop         ; Execute the content of the loop
loop1   cmp ax,1    ; Check the condition
        je cloop1   ; Jump to content of the loop if met

对于for循环,你应该使用cx寄存器,因为它几乎是标准的。对于其他循环条件,你可以使用你喜欢的寄存器。当然,用你想在循环中执行的所有指令替换无操作指令。

 类似资料:
  • 机器语言 机器语言是指令的集合。 汇编语言 汇编语言的主体是汇编指令。 存储器 随机存储器RAM,可读可写,必须带电存储,关机后存储的内容丢失 只读存储器ROM,只读,关机后其中的内容不丢失 装有 BIOS (基本输入输出设备)的ROM 接口卡上的RAM:显存 外存(storage,磁盘)和内存(memory,主存,高速缓存) 内存地址空间 存储单元:1个字节(byte) 总线 地址总线:CPU是

  • 问题内容: 哪个对性能更好?这可能与其他编程语言不一致,因此,如果它们不同,或者如果您可以使用特定语言来回答我的问题,请解释。 我将以c ++为例,但是我想知道它如何在java,c或任何其他主流语言中工作。 VS 哪个表现更好?如果它是for循环,那么可以说已经声明了一个可以在while循环增量中使用的整数,我们是否不需要为while循环创建? 例: 与创建for循环相比,此实例是否会使while

  • 上面介绍的在Solidity中嵌入的内联汇编语言也可以单独使用。实际上,它是被计划用来作为编译器的一种中间语言。在这个目的下,它尝试达到下述的目标: 使用它编写的代码要可读,即使代码是从Solidity编译得到的。 从汇编语言转为字节码应该尽可能的少坑。 控制流应该容易检测来帮助进行形式验证与优化。 为了达到第一条和最后一条的目标,Solidity汇编语言提供了高层级的组件比如,for循环,swi

  • 主要内容:循环控制语句当您需要执行一段代码多次时就可能要执行循环了。一般来说,语句按顺序执行。首先执行函数中的第一个语句,然后执行第二个语句,依此类推。 编程语言提供了允许更复杂的执行路径的各种控制结构。 循环语句允许我们多次执行语句或语句组,以下是大多数编程语言中循环语句的一般形式 - R编程语言提供以下种类的循环来处理循环需求。可单击以下链接来查看其详细信息。 序号 循环语句 描述 1 repeat循环 多次执行一

  • 《汇编语言》(Assembly Language)是计算机专业中一门重要的基础课程,是一种面向机器的低级语言。它依赖于硬件,能通过巧妙的程序设计充分发挥硬件的潜力。汇编语言程序产生的代码运行效率高。因此,到目前为止,许多软件系统(例如操作系统等)的核心部分仍然用汇编语言来编写。

  • 在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。 以下为大多编程语言循环程序的流程图: Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 循环控制语句 循环控制语句可以控制循环体内语句的执行过程。 GO 语言支持以下几种循环控制语句: 控制语句 描述 break 语句