
;
ADD1_99:
MOV AX, 0
MOV CX, 99
LP: ADD AX, CX
LOOP LP
RET
END
子程序中一般不能用JMP跳出,否则会造成地址混乱,因为调用子程序时会有堆栈 *** 作,将当前地址压栈,子程序返回时会出栈恢复地址,如果用JMP指令,那么就没有出栈 *** 作了,多调用几次,就可能造成堆栈溢出,从而程序就乱了。
; 本程序在MASMPlus 12集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 冒泡排序:对从MEM单元开始的N个8位无符号数降序排序
; 入口参数:ds:SI=数组地址,CX=数组元素个数
Bubbling Proc Near
push es
push si
push di
push cx
push ax
push ds
pop es
dec cx ;外循环次数
cld
@@Scanning: push cx ;入栈保存外循环次数
push si ;入栈保存数组地址
@@Compare: mov di,si ;当前数组元素地址赋给目的变址寄存器,以备交换之用
lodsb ;将当前数组元素读入累加器
cmp al,[si] ;当前数组元素与相邻的下一个数组元素相比较
jae @@NextOne ;若大于或等于,不作数据交换,处理下一个数组元素
xchg al,[si] ;若小于,交换数组元素
stosb ;保存数值较小者
@@NextOne: loop @@Compare ;处理下一个数组元素
pop si ;数组地址出栈
pop cx ;外循环次数出栈
loop @@Scanning ;下一趟比较
pop ax
pop cx
pop di
pop si
pop es
ret
Bubbling EndP
; -------------------------------------
MEM db 12,56,253,200,10,99,78,75,63,100
N equ $-MEM
Press_Key db 7,13,10,13,10,'The complated Press any key to exit$'
Start: push cs
pop ds
mov cx,N ;数组元素个数
lea si,MEM ;数组地址
call Bubbling
; -------------------------------------
Exit_Proc: Output Press_Key ;提示 *** 作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
:
MOV R3, #0 ;先清零
MOV R4, #0
MOV R0, #30H ;加数首地址
MOV R2, #16 ;共加16次
LOOP:
MOV A, R4 ;取来低8位
ADD A, @R0 ;加上
MOV R4, A
MOV A, R3 ;取来高8位
ADDC A, #0 ;加上进位
MOV R3, A
INC R0
DJNZ R2, LOOP
RET
END
《汇编语言程序设计》(张晓明)电子书网盘下载免费在线阅读
链接:> 密码:zjxn
书名:汇编语言程序设计
作者:张晓明
出版年份:2009-1
页数:284
内容简介:
《汇编语言程序设计》以Microsoft宏汇编MASM为背景,系统讲述了8086指令系统及汇编语言程序设计的方法和技术,介绍了32位80x86系列微处理器指令及其程序设计。全书共分10章,第1章介绍基础知识;第2、3章介绍8086微处理器的基本结构、寻址方式及汇编语言程序格式;第4~7章叙述基本指令系统及顺序结构、分支结构、循环结构、子程序等设计方法;第8章介绍宏与多模块程序设计技术;第9章介绍输入/输出和中断程序设计;第10章介绍32位80x86微处理器指令及其程序设计方法。全书提供了大量程序实例,每章后均附有习题。
顺序程序结构,分支或选择程序结构,循环程序结构,子程。
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。
扩展资料:
注意事项:
汇编指令不区分大小写,目的 *** 作数是存结果的,原 *** 作数是被 *** 作的。
二进制数后跟b,十六进制数后跟h,十进制数不需特殊标记。
汇编源程序中,数据不能以字母开头,需要在前面加上0,如0a000h。
汇编源程序中:mov al,[0] 含义:(al)=0 (debug中此指令与下一指令意义相同)。
参考资料来源:百度百科-汇编语言程序
参考资料来源:百度百科-结构化程序设计
对于参数个数可变的子程序,当参数不超过4个时,可以使用寄存器R0~R3来进行参数传递,当参数超过4个时,还可以使用数据栈来传递参数
在参数传递时,将所有参数看做是存放在连续的内存单元中的字数据。然后,依次将各名字数据传送到寄存器R0,R1,R2,R3;
如果参数多于4个,将剩余的字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈
再看看别人怎么说的。
以上就是关于用汇编语言(子程序设计)编写计算1+2+3+……+99=的程序。怎么编写全部的内容,包括:用汇编语言(子程序设计)编写计算1+2+3+……+99=的程序。怎么编写、汇编语言中,我设计了一个子程序,我想问一下在子程序中可以用jmp跳出该子程序吗、汇编程序设计题 用子程序结构,将从MEM单元开始的10个8位无符号数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)