怎么用汇编语言实现for循环
反汇编是机器编译出来的东西,有必要分析那个么?
如果你想分析,使用ADS就能看到反汇编了
写个例子给你吧
假设要实现循环累加1+2+3+4+5+.....+100
你要循环101次也就是从0到100
MOV r0,#100;定义循环次数101次
MOV r1 , #0;初始化保存结果的寄存器
MOV r2 , #1;
loop
ADD r1,r1,r2;
ADD r2,r2,#1;
SUBS r0,r0,#1;
BNE loop
用汇编语言实现排序,通常使用冒泡法。将数据段DATA开始的16个数排序,前小后大,程序示例如下:
DATAS SEGMENT
DATA DB 74,68,58,66,69,254,186,6,10,98,34,90,128,222,33,0
COUNT DB 10H
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,ES:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
MOV BL,1 ;用BL来检验是否排序完成,减少循环次数
LOOP1:
CMP BL,0
JE CMPEND ;若相等则跳转
XOR BL,BL ;将BL清零
MOV CL,COUNT ;COUNT用于外层的计数
DEC CL ;CL减一,CL用于内层的计数
PUSH CX ;将CX压入堆栈
LEA DI,DATA ;将数据段首地址赋值给DI
LOOP2:
MOV AL,[DI]
CMP AL,[DI+1] ;将前一个数与后一个数比较
JLE LOOP3 ;若前一个数小于或等于后一个数,则跳转到LOOP3
XCHG [DI+1],AL;前者大于后者,则交换两数
MOV [DI],AL ;如果前一个数字大于后一个数字,则交换
MOV BL,1
LOOP3:
INC DI ;指针加一
LOOP LOOP2 ;循环L00P2,直到CX==0成立
POP CX ;将CX从堆栈中弹出
MOV COUNT,CL ;改变外层计数器的值
JMP LOOP1
CMPEND:
MOV AH,4CH ;带返回码结束功能
INT 21H ;返回系统
CODES ENDS
END START
C语言:
for(i=0;i<10;i++)a=a+i;
汇编语言:
i equ 30h
m equ 31h
......
mov i,#0
mov m,#0
mov r2,#10
loop:
mov a,i
add a,m
mov m,a
djnz r2,loop
汇编语言实现for循环十分容易,比如51汇编,用DJNZ指令就可以了,举例如下:
C语言:
for(i=0;i<10;i++)a=a+i;
汇编语言:
i
equ
30h
m
equ
31h
......
mov
i,#0
mov
m,#0
mov
r2,#10
loop:
mov
a,i
add
a,m
mov
m,a
djnz
r2,loop
有类似的循环语句
一般是用LOOP语句
条件就是CX不为零
也可以用判断和计算组合,实现FOR循环功能
for_loop:cmp ecx,0;--比较
lea eax, message2;
……
比较后,应该用一个条件转移指令。
满足条件,就跳出循环。
只给你一点思路
一层for循环用loop会写吗?
把循环次数放在cx中然后 loop
多层循环的话 外层循环结束把cx的值push到栈中,内存循环结束后再pop出来完成外层循环
什么是汇编语言?
使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等...
汇编语言编写一个程序,实现十进制、十六进制和二进制之间的转换_百度知 ...
CODE SEGMENT ASSUME CS:CODE STRR DB 18 STRRN DB ? STRRS DB 18 DUP(?) START: PUSH CS POP DS PUSH CS POP ES CALL INPUT CALL LFCR CALL
MOVF,MOVWF在单片机汇编语言里是什么意思啊?
PIC的精简指令,MOVF是把一个寄存器内存送入W寄存器中,如 MOVF 8,0 就是把第8寄存器送到W中(相当于8051中累加器A) ,后面是0说明存后F不变 MOVWF 与上面相反,把W内容存入F寄存器中, 相当于MOV W to F
【高分】帮忙用汇编语言做一个程序:学生成绩统计
【高分】帮忙用汇编语言做一个程序:学生成绩统计 一个班学生成绩的录入和输出,学生的信息包括学生姓名,学号,成绩。求这个班学生的平均成绩并精确到小数点后两位,还要按成绩排序。... 一个班学生成绩的录入和输出,学生的信息包括学生姓名,学号,成绩。求这个班学生的平均成绩并精确到小数点后两位,还要按成绩排序。
...低电平宽360us的连续矩形脉冲.(用汇编语言)
LOOP: LCALL DELAY1;SETB P1.7;LCALL DELAY2;CLR P1.7;LJMP LOOP;DELAY1:MOV R0,#9;DL1: DJNZ R0,DL1;RET DELAY2:MOV R1,#89 DL2: DJNZ R1,DL2 RET
汇编语言是用什么软件编写啊?
使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等...
用汇编语言编程实现二进制数和十六进制数之间的转换。(要求键入被转换...
dseg segment hextb db '0123456789ABCDEF' msg0 db 0dh,0ah, '***Menu***',0dh,0ah db '* 1.Input Binary Number:*',0dh,0ah db '* 2.Input Hex Number: *',0dh,0ah db '* 3.exit *',0dh,0ah db '***',0dh,0ah,'$' msg1 db 0dh,0ah,...
小弟初学汇编 怎样搭建开发环境?MASM怎么用?PWB是什么?
汇编(六)——汇编语言程序格式及MASM 汇编语言的实现也是先利用某种编辑器编写汇编语言源程序(*.ASM),然后经过汇编得到目标模块文件(*.OBJ)、连接后形成可执行文件(*.EXE)。 1、汇编语言程序的语句格式 汇编语源程序由语句序列构成。语句一般由分隔符分成的四个部分组成,它们有两种格式: (1)执行性语句——由硬...
用汇编语言编写一个程序
感楼主诚意,费了九牛二虎之力,方才完成。不知能否满足要求。; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code CR equ 000DH LF equ 000AH KBBack equ 0008H Name_Len equ 18 ;用户名最大长度 Pass_Len equ 8 ;密码最大长度 ; --- ; 将用户...
汇编语言 实现求平均数问题 急急急急急!!!
汇编语言 实现求平均数问题 急急急急急!!!; 题目名称:评委打分,去掉一个最高分、一个最低分,求平均得分,保留1位小数; 题目来源:http:\/\/zhidao.baidu.com\/question\/130197847.html; 本程序在MAS
濮秦灵宝: for 的话用该很好写啊 mov cx,64 lop:mov [pr],0 loop lop
阿里地区15548884317: 用ARM汇编怎么实现c语言中的for循环 - ?
濮秦灵宝: 反汇编是机器编译出来的东西,有必要分析那个么?如果你想分析,使用ADS就能看到反汇编了 写个例子给你吧 假设要实现循环累加1+2+3+4+5+.....+100 你要循环101次也就是从0到100 MOV r0,#100;定义循环次数101次 MOV r1 , #0;初始化保存结果的寄存器 MOV r2 , #1; loop ADD r1,r1,r2; ADD r2,r2,#1; SUBS r0,r0,#1; BNE loop
阿里地区15548884317: 怎么用汇编语言表示C语言中的for语句,举例 - ?
濮秦灵宝: 微机汇编有MOV CX,30 loop CYCLE 表示循环执行CYCLE 三十次 单片机汇编有 MOV R0,#30 DJNZ RO,CYCLE 表示循环执行CYCLE 三十次
阿里地区15548884317: 请问怎样用汇编语言实现循环输入十个数,然后输出结果 - ?
濮秦灵宝: data segment mes db 'Please input number:',0ah,0dh,'$' data ends code segment assume cs:code,ds:data start:push dssub ax,axpush axmov ax,datamov ds,axmov cx,10lea dx,mesmov ah,09int 21h input:mov ah,01int 21hmov dl,0ah...
阿里地区15548884317: C语言for循环的使用和讲解,希望详细点,初学者 - ?
濮秦灵宝: for(表达式1;表达式2;表达式3) { 内容 } 比如 for(int i=0;i<100;i++) { sum=sum+i } 意思是先定义一个整型i给他赋初值0,在判断i是否小于100,是的话执行sum=sum+1;之后i在加1;一直循环到i>=100的时候这个循环就结束了.
阿里地区15548884317: C语言如何实现循环 - ?
濮秦灵宝: 用for语句、while语句、do while语句就可以了~~~
阿里地区15548884317: 请教C语言中循环语句for的执行过程,谢谢!! - ?
濮秦灵宝: 举个例子说:for(i=0;i<10;i++),它的执行过程就是这样的:1,使i=0.然后判断i是否小于10 ,则执行i<10的判断语句.若成立就执行for所带的循环体,不成立就跳出循环执行后面的语句. 2,若在1中执行了循环体,然后就执行i++;再判断i<10是否成立,成立就执行循环体,否则跳出. 就这样一直执行到跳出循环体. 不知道我说的你是否能明白!!
阿里地区15548884317: C语言中for语句如何使用??
濮秦灵宝: for循环是开界的.它的一般形式为: for(<初始化>; <条件表达式>; <增量>) 语句; 初始化总是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后 按什么方式变化.这三个部分之间用";"分开. 例如: for(i=1; i<=10; i++) 语句; 上例中先给 " i " 赋初值1, 判断 " i " 是否小于等于10, 若是则执行语句, 之后值增 加1.再重新判断, 直到条件为假, 即i>10时, 结束循环
阿里地区15548884317: C语言中的”for循环“是怎样一个流程?请高手详细描述下,谢谢 - ?
濮秦灵宝: 我举例,这样你更清楚了 for(int i=1;i<6;i++) cout<<i<<endl; 首先执行int i=1;这一语句,即定义i.然后判断i,即执行i<6;如果是真,则执行cout<<i<<endl;如果是假,则退出循环.最后再执行i++
阿里地区15548884317: c语言中for语句是怎么用的 - ?
濮秦灵宝: c语言中for语句用法: for是C语言中的一个关键字,主要用来控制循环语句的执行. 举例: int i; for(i=0; i<3; i++) // i=0是初始化部分;i<3是循环判断条件部分(当满足此条件时才进入执行for循环中的语句);i++是执行完循环体语句后的操作 { printf...