东华大学微机实验报告答案(软件)(3000字)-

发布时间 : 星期四 文章东华大学微机实验报告答案(软件)(3000字)- 更新完毕开始阅读

int 21h mov ah,4ch int 21h code ends end start

运行结果:

实验六 分支程序设计

1、实验说明:假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数大于0,等于0,还是小于0;并输出其判断结果。 即:

1 当x>0 当x=0 当x<0

2、调试说明:在最初的程序中,我使用了mov bx,xx等语句,后来发现像这样的语句在实际使用中有些累赘,于是我便做了修改,简化了汇编语言。其次,在调试中,发现符号无法显示的问题,于是采用两次显示符号的方法,较理想的解决了负号问题。 3

4、源程序清单和执行结果: 源程序:

data segmentxx db 05h,0fch,00h,03h,64h,0cdh y1 db y=1,0dh,0ah,$ y2 db y=0,0dh,0ah,$ y3 db y=-1,0dh,0ah,$ data ends

stack segment stack db 10 dup(0) stack ends code segment

assume ds:data,ss:stack,cs:code start: mov ax,data mov ds,ax lea si,xx mov ax,0 mov cx,6

l1: mov al,[si] cmp al,0 ;与0比较 jg biger je equal

mov dx,offset y3 mov ah,09h int 21h jmp output

biger: mov dx,offset y1

mov ah,09h int 21h jmp output

equal: mov dx,offset y2 mov ah,09h int 21h

output:inc si loop l1 mov ah,4ch int 21h code ends end start 运行结果:

思考题:

程序中的原始数据是以怎样的形式存放在数据区中的?请用debug调试程序观察并分析。

以补码形式存放 实验七 循环程序设计 实验内容:

1. 编制程序计算s=1+2?3+3?4+4?5+??+n(n+1)+??直到n(n+1)大于200为止,并将结果由屏幕上显示出来。其程序的流程图如图7. 1所示。

2. 将从3000h内存单元开始的100个字节存储单元全部清0。本实验要求在debug调试状态下进行,包括汇编程序、运行程序、检查结果。 源程序:

(1)编制程序计算s=1+2?3+3?4+4?5+??+n(n+1)+??直到n(n+1)大于200为止,并将结果由屏幕上显示出来。 data segment result dw ? data ends

stack segment stack db 10 dup(0) stack ends code segment

assume cs:code,ds:data,ss:stack start: mov dx,1 mov bl,2

lp: mov al,bl add bl,1 mul bl

add dx,ax ;dx中存放sum和 cmp ax,200 jg output loop lp

output: mov bx,dx mov cx,4

lp2: rol bx,1 ;bl存放和,移位,从高到低一位一位显示rol bx,1 rol bx,1 rol bx,1 mov ax,bx

and ax,000fh ;取bl中低四位 xor dx,dx

add al,30h ;十六进制转换成ascii码加30h

cmp al,3ah ;0—9数字与a—f的ascii码不连续 jb pit

add al,07h ;若比a(10)大,还要再加07h pit: mov dl,al mov ah,02h

int 21hloop lp2 mov ah,4ch int 21h code ends end start 运行结果:

(2)将从3000h内存单元开始的100个字节存储单元全部清0。本实验要求在debug调试状态下进行,包括汇编程序、运行程序、检查结果。 data segment org 3000h

x db 100 dup(?) data ends

stack segment stack db 10 dup(?) stack ends code segment

assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax lea si,x mov cx,100

lp: and byte ptr[si],00h inc si loop lp mov ah,4ch int 21h code ends end start

运行结果:

先将内存单元赋值,用debug的e指令赋值,用d指令查看内存中的数据

再运行程序,将内存单元全部清零

实验八 子程序设计

1、程序说明:编制一程序,要求键入一个班的学生成绩,并存放于50字的erade数组中,然后根据erade中的成绩,把学生名次填入50字的rank数组中,再按学号顺序把名次从终端上显示出来。 提示:

① 程序main

功能:根据输入的学生成绩,计算并显示出学生名次。 ② 子程序input

功能:接收一个班级学生的成绩,各成绩之间用空格隔开。 ③ 子程序rankp

功能:计算一个班级学生的名次。 ④ 子程序output

功能:输出(显示)一个班级的学生名次 ⑤ 子程序decibin

功能:十进制转换二进制,存入bx ⑥ 子程序bindec

功能:十进制转换二进制,并在屏幕上显示。 ⑦ 子程序dec_div

功能:bx的内容除以cx的内容,并在屏幕上显示一位商。 源程序: data segment

grade dw 50 dup( ) rank dw 50 dup( )

enter db grades:,24h ;提示用户输入成绩

error db 13,10,error!,13,10,24h ;用户输入的格式出错show db rank: ,24h count dw 0 ;统计输入的成绩个数 cr db 13,10,24h ;换行 data ends

stack segment stack db 400 dup(0) stack ends code segment

assume cs:code,ds:data,ss:stack start:

mov ax,data mov ds,ax mov es,ax call input call rankp

call outputmov ah,01h

联系合同范文客服:xxxxx#qq.com(#替换为@)