首先,我亮困先将a杯中的所有糖倒入c杯;
其次,再将b杯中的所有盐倒入a杯;
最后,将c杯中的所有糖倒入b杯;
是不是a杯的敬让念糖和b杯的盐做了交换,最后结果是a杯装满盐,b杯装满糖,c充当了中间交换作用。
int a=1,b=2,c
把a的值赋给c,即c=1再把b的值赋给a,即a=2最后把c的值赋给b,即b=1;即c是中间变量,a、b完成交换。完了!!!滑闹
HELLO,WORLD进阶汇编程序系列Editor:admin Time:2004-3-21 12:49 Read:9785 Score:8 Print
Writer:LLUCT
Excerpt:80x86汇编小站
Preface:
感谢网友lluct为本站提供原创......适合初学者学习哦
Content:
TITLE ***HELLO,WORLD进阶程序之选择分支 BY LLUCT***
DATASEGMENT 定义数据段
MSG1DB '***WELCOME TO MY PROGRAM BY LLUCT***','$'
定义输出的第一个字符串信息,字符串必须用DB定义,$为结束标志磨模
MSG2DB '1:BASIC MESSAGE 2:ADVANCED MESSAGE','$'
定义输出的字符串信息:选择菜单
MSG3DB 'PLEASE CHOOSE:','$'
定义输出的字符串信息:选择前缀
MSG4DB 'HELLO,WORLD!^-^','$'
定义输出的字符串信息:分支1的信息
MSG5DB 'THIS IS MY FIRST ASM_86 PROGRAM! @^-^@','$'
定义输出的字符串信息:分支2的信息
ERRMSG DB 'CHOOSE ERROR! -_-b','$'
定义输出的字符串信息:选择错误信息
DATAENDS 数据段结尾
CODESEGMENT 定义代码段
ASSUME CS:CODE 规定CS的内容
ASSUME DS:DATA 规定DS的内容
START: MOV AX,DATA 程序从START开始
MOV DS,AX DS置初值,DATA的段地址
CALL ENTER 调用显示回车换行子程序
LEA DX,MSG1 输出第一个字符串的偏移地址
CALL DISPCHS 调用显示字符串子程序
CALLENTER 调用显示回车扮游谈换行子程序
CALLENTER 这个...同上啊^-^
LEA DX,MSG2 输出第二个字符串的偏移地址
CALL DISPCHS 调用显示字符串子程序
AGAIN: CALLENTER 定义AGAIN标号.用于选择错误循环
LEA DX,MSG3 输出第三个字符串的偏移地址
CALL DISPCHS 调用显示字符串子程序
MOV AH,01H 调用1号功能:从键盘输入一个字符并回显
INT 21H 完成输入回显
CMP AL,'1' 输入的字符和1相比较
JE BASICP 如果相等,转移到BASICP标号(JE=Jump if Equal)
CMP AL,'2' 输入的字符和2相比较 ||
JE ADVANP 如果厅碰相等,转移到ADVANP标号(JE=如果相等就转移)
JMP ERROR 否则就无条件转移到ERROR标号
EXIT: MOV AH,4CH 4C号功能调用:终止当前程序并返回调用程序
INT 21H 返回DOS
BASICP: CALLENTER 什么,还要解释啊.晕-_-!!!
LEA DX,MSG4 输出第三个字符串的偏移地址
CALL DISPCHS 调用显示字符串子程序
CALLENTER ..........
JMP EXIT 无条件转移到EXIT标号
ADVANP: CALLENTER 55555555
LEA DX,MSG5 解释了四次,应该懂了吧
CALL DISPCHS 调用显示字符串子程序
CALLENTER 再问就死给你看
JMP EXIT 无条件转移到EXIT标号
ERROR: CALLENTER
LEA DX,ERRMSG 输出选择错误信息
CALL DISPCHS 调用显示字符串子程序
MOV DL,07H 输出ASCII码的报警(响铃)控制符BEL(07H)
CALL DISPCH 调用显示单个字符子程序
CALLENTER
JMP AGAIN
DISPCH PROCNEAR
显示单个字符子程序,NEAR说明子程序和主程序在同一个代码段中(现无主程序调用)
MOV AH,02H 2号功能调用:显示器输出字符
INT 21H 完成输出显示
RET 返回
DISPCH ENDP 子程序结尾
ENTER PROCNEAR 显示回车换行子程序
MOV DL,0DH 输出ASCII码的回车控制符CR(0DH)
CALLDISPCH 调用显示单个字符子程序
MOV DL,0AH 输出ASCII码的换行控制符LF(0AH)
CALLDISPCH 调用显示单个字符子程序
RET 返回
ENTER ENDP 子程序结尾
DISPCHS PROC NEAR
显示字符串子程序,NEAR说明子程序和主程序在同一个代码段中(现无主程序调用)
MOV AH,09H 9号功能调用:显示字符串
INT 21H 完成输出显示
RET
DISPCHS ENDP
CODEENDS 代码段结尾
END START 结束汇编
把以上代码复制到记事本等文本程序中,并保存.(如helloch.asm)
编译:masm helloch.asm
连接:link helloch.obj
执行:helloch.exe
======================================================
title ***hello,world进阶之字符串输入输出 by lluct***
datasegment 定义数据段
input db 100 dup(?)
定义输入的字符串,字符串必须用db定义,长度为100个字节
msg1db 'Hello,','$'
定义输出的前缀字符串信息,字符串必须用db定义,$为结束标志(24h)
msg2db ',Welcome to here!','$'
定义输出的后缀字符串信息
headmsg db 'PLEASE INPUT YOUR NAME:','$'
开始显示的字符串信息
dataends 数据段结尾
codesegment 定义代码段
assume cs:code 规定cs的内容
assume ds:data 规定ds的内容
start: mov ax,data 程序从start开始
mov ds,ax ds置初值,data的段地址
mov si,0 变址寄存器置初值0
callenter 调用显示回车换行子程序
lea dx,headmsg 输出开始显示的字符串的偏移地址
calldispchs 调用显示字符串子程序
repeat: mov ah,01h
定义repeat标号,用于循环输入单个字符.调用1号功能:从键盘输入一个字符并回显
int 21h 完成输入回显
cmp al,0dh 输入的字符和CR(回车)比较
je exit 如果等于回车就转移到exit
mov input[si],al 把al的值传送到input的si地址中(好像是这样吧)
inc si si加1
jmp repeat 无条件转移到repeat
exit: callenter
mov input[si],24h 给输入完成的字符串加上结束标志($)
callenter
lea dx,msg1 输出前缀字符串的偏移地址
calldispchs 调用显示字符串子程序
lea dx,input 输出刚才输入的字符串
calldispchs
lea dx,msg2
calldispchs
callenter
mov ah,4ch 4c号功能调用:终止当前程序并返回调用程序
int 21h 返回dos
enter procnear 显示回车换行子程序
mov dl,0dh 输出ascii码的回车控制符cr(0dh)
calldispch
mov dl,0ah 输出ascii码的换行控制符lf(0ah)
calldispch
ret 返回
enter endp 子程序结束
dispch procnear
mov ah,02h 2号功能调用:显示器输出字符
int 21h 完成输出显示
ret 返回
dispch endp
dispchs procnear
mov ah,09h 9号功能调用:显示字符串
int 21h 完成输出显示
ret 返回
dispchs endp
codeends 代码段结尾
end start 结束汇编
把以上代码复制到记事本等文本程序中,并保存.(如heinout.c)
编译:masm heinout.asm
连接:link heinout.obj
执行:heinout.exe
答:
第一种:顺序结构
顺序结构表示程序中的各个 *** 作时按照它们在源代码中的排列顺序依次执行的,其流程如图所示。
图中的S1和誉派S2表示;两个处理步骤,这些处理步骤可以是一个非转移 *** 作或多个非转移 *** 含模作,甚至可以是空 *** 作,也可以是三种基本 *** 作中的任意一种结构,整个顺序结构只有一个入口点a和一个出口点b。这种结谈虚缓构的特点是:程序从a出开始,按顺序执行所有 *** 作,知道出口b处,所以称为顺序结构。
第二种:选择结构 选择结构表示程序处理需要根据某个特定条件选择其中一个分支执行。选择结构有单选择、双选择、多选择。其流程如图所示。
第三种:循环结构 循环结构表示程序反复执行某个或某些 *** 作,直到满足特定条件时结束,循环结构有两种基本形式:当型循环和直到型循环,其流程如图所示。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)