汇编实验8
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
暨南大学本科实验报告专用纸
课程名称汇编语言程序设计成绩评定
实验项目名称分支程序设计指导教师
实验项目编号实验项目类型
实验地点学生姓学号2014053433
学院信息科学技术学院系计算机系专业计算机科学技术专业实验时间2016年 4 月30 日下午15:00~16:50
一、实验目的和要求
1) 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。
a)当输入字符为A,则计算X+Y,并以十六进制形式显示出来
b)当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来
c)当输入字符为C,则计算X*Y,并以十六进制形式显示出来
d)当输入字符为D,则计算X/Y,并以十六进制形式显示出来
2)编程实现:设从STRING开始存放有一个以#为结束标志的字符串,把字符串中的字符进行分类,数字字符送入NUM开始的内存区中,大写字母送入从BCHAR开始的内存区中,小写字母存入从LCHAR开始的内存区中,其他字符存入从OTHER开始的内存区中。
3)编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。要求在屏幕上以右边对齐的形式显示出来。
编程要点:
(i)在数据段中设置两个存放提示信息的字符串,一个是提示用户输入,另一个是指示显示信息位置;
(ii)在数据段中设置两个存放输入字符串的缓冲区;
(iii)输入字符串采用0AH号DOS功能调用,字符串存入缓冲区时,第2个字节为实际输入字符串的长度,从第3个字节开始为字符串的ASCII码。(iv)为了实现显示的右对齐,由于两个字符串缓冲区的长度相同,
只需要将两个字符串向缓冲区后面靠齐,再调用09H号DOS功能调用即可达到显示的右对齐。
二、程序流程图(每题分开写)
1.
、
三、源程序(每题分开写)
1. DSEG SEGMENT 'DATA'
; add your data here!
DSEG ENDS
SSEG SEGMENT STACK 'STACK' db 256 DUP(0)
SSEG ENDS
CSEG SEGMENT 'CODE'
START PROC FAR
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
; add your code here
mov ah,01h
int 21h
mov cl,al
int 21h
mov dl,al
int 21h
mov bx,0
cmp cl,65
jb one1
sub cl,55
jmp outC
one1:
sub cl,48
outC:
cmp dl,65
jb one2
sub dl,55
jmp outD
one2:
sub dl,48
outD:
cmp al,65
je start1
cmp al,66
je start2
cmp al,67
je start3
mov al,cl
cbw
div dl
cmp al,10
jnb add1
add al,48
jmp outd1
add1:
add al,55 outd1:
cmp ah,10
jnb add2
add ah,48
jmp outd2
add2:
add ah,55 outd2:
mov bx,ax
mov ah,02h
mov dl,10
int 21h
mov dl,bl
int 21h
mov dl,46
int 21h
int 21h
int 21h
int 21h
int 21h
int 21h
mov dl,bh
int 21h
jmp END start1:
add cl,dl
mov al,cl
cbw
mov bl,16
div bl
mov bl,ah
mov bh,al
cmp bl,10
jnb add3
add bl,48
jmp outd3
add3:
add bl,55
outd3:
cmp bh,10
jnb add4
add bh,48
jmp outd4
add4:
add bh,55 outd4:
mov ah,02h
mov dl,10
int 21h
mov dl,bh
int 21h
mov dl,bl
int 21h
jmp END start2:
mov bl,dl
cmp bl,cl
jnb sub1
mov al,bl
mov bl,cl
mov cl,al
sub1:
sub bl,cl
cmp bl,10
jnb add5
add bl,48
jmp outd5
add5:
add bl,55 outd5:
mov ah,02h
mov dl,10
int 21h
mov dl,bl
int 21h
jmp END