例4.4代码段-2/ start1:moⅴdx, offset msg;提示输入数字 mov ah. 9 int 21h mov ah. 1 等待按键 int 21h cmpa1,'1’;数字<1? jb startI cmp al,8 数字>8? ja startI and ax,000fh;将 ASCII码转换成数字
start1: mov dx,offset msg ;提示输入数字 mov ah,9 int 21h mov ah,1 ;等待按键 int 21h cmp al,'1' ;数字 < 1? jb start1 cmp al,'8' ;数字 > 8? ja start1 and ax,000fh ;将ASCII码转换成数字 例4.4 代码段-2/3
例4.4代码段-3/ dec ax shl ax,1;等效于 add ax,ax moy bx. ax jmptable[bx 可以改为 call table[bx] (段内)间接转移:IP←[ table+bx] start: mov ah, 9 int 21h exit o displ: mov dx, offset msgl 处理程序 jmp start 对应修改为ret ENTER
dec ax shl ax,1 ;等效于add ax,ax mov bx,ax jmp table[bx] ;(段内)间接转移:IP←[table+bx] start2: mov ah,9 int 21h .exit 0 disp1: mov dx,offset msg1 ;处理程序1 jmp start2 ... 例4.4 代码段-3/3 可以改为 call table[bx] 对应修改为 ret
4.3循环程序设计 循环结构一般是根据某一条件判断为 真或假来确定是否重复执行循环体 循环指令和转移指令可以实现循环控 制;还可以采用MASM6x提供的循环 控制伪指令实现 循环指令L00P:例4.5等 循环指令L00PE:例4.6 眾转移指令:例47 多重循环:例4.8等
4.3 循环程序设计 ➢循环结构一般是根据某一条件判断为 真或假来确定是否重复执行循环体 ➢循环指令和转移指令可以实现循环控 制;还可以采用MASM 6.x提供的循环 控制伪指令实现 循环指令LOOPE:例4.6 转移指令:例4.7 多重循环:例4.8等 循环指令LOOP:例4.5等
循环结构 初始化 循环的初始状态 循环体 循环的工作部分 修改部分 及修改部分 控制条件 计数控制循环 条件控制循环 结束
循环结构 结束 初始化 循环的初始状态 循环体 循环的工作部分 及修改部分 计数控制循环 条件控制循环 修改部分 控制条件 Y N
model small 例4.5求和 stack 256 data sum dw 米计数控制循环」 。code 米循环次数固定 startup Xor ax. ax 被加数A清0 moⅴcx,100 again: add ax, cx ;从100,99,,2,1倒序累加 oop again mov sum,ax;将累加和送入指定单元 exit o end
.model small .stack 256 .data sum dw ? .code .startup xor ax,ax ;被加数AX清0 mov cx,100 again: add ax,cx ;从100,99,...,2,1倒序累加 loop again mov sum,ax ;将累加和送入指定单元 .exit 0 end 例4.5 求和 计数控制循环 循环次数固定