微机原理实验4循环结构
物理与机电工程系
(2015——2016 学年第 一 学期)
《调试程序的使用》
上机实验报告
专 业:电子信息工程
学 号:
姓 名: 成功回
任课教师: 官方个
实验地点: 实验楼5537
项目编号: 实 验 四
实验目的:
加深对循环结构的理解。
掌握循环程序的设计方法。
实验内容:
编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
将字形变量x以二进制数的形式在屏幕上显示输出。
将字形变量x以十六进制数的形式在屏幕上显示输出。
将内存单元缓冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显。
实验过程:
编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。
程序流程图如下:
程序源代码如下:
DATAS SEGMENT
s dw ?;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
dw 64 dup(?);此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
mov bx,0001h ; BX=1
mov dl,02h ;DL=2
lop2: mov al,dl ;AL=2
inc dl;加1 ;DL=3
mul dl;无符号数乘法 AX=AL*DL=2*3
add bx,ax ;BX=AX+BX
cmp ax,00C8h;与200比较
jbe lop2;不高于转移
mov s,bx
mov ch,4
mov cl,4
lop1: rol bx,cl
mov dl,bl
and dl,0Fh
cmp dl,09h
jbe next;低于等于转移 <=
add dl,7
next:add dl,30h
mov ah,2
int 21h
dec ch
jnz lop1;非零转移
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序运行结果如下:
程序反汇编过程如下:
将字形变量x以二进制数的形式在屏幕上显示输出。
程序流程图如下:
程序源代码如下:
DATAS SEGMENT
x dw 1325h ;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov bx,x
mov cx,10h
lop1: rol bx,1 ;不带cf的循环左移
jc next;进位转移,即cf=1
mov dl,30h;将0送入dl
jmp next2
next: mov dl,31h;将1送入dl
next2:mov ah,2
int 21h
loop lop1;循环执行lop1
MOV AH,4CH
INT 21H
CODES ENDS
END STARTDATAS SEGMENT
x dw 933;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov bx,x
mov ch,4
mov cl,4
lop1: rol bx,cl j