我从前最怕旁人火眼金睛,如今,倒是盼着有人能够洞幽烛远。如此,就能赠我一点欢喜。
一、实验目的
- 理解程序在访问内存单元时采用的各种寻址方式
- 学会基于字符的ASCII编码,进行大小写转换、简单加密等方法
- 学会用loop指令,结合寻址方式,编制单层和双层循环程序解决问题
二、实验内容过程记录
任务1-字符串加密
编程为datasg段中字符串中的每个字符加密,加密规则是:每个字符的ASCII值加4。加密好的字符写在待加密字符的后面。编每个程序时,要求先画出流程图,程序中应该有足够的注释。
assume cs:codesg,ds:datasg
datasg segment
db 'aah, I love you!'
db '................'
datasg ends
codesg segment
start: (写程序)
mov ax,4c00h
int 21h
codesg ends
end start
我的解答:
(1)编程思路及流程图
(2)源程序(缩格规范,有足够的注释)
(3)运行结果
任务2 - 求总成绩
在下面的数据段中,给出了全班5名同学OS、AL、SE、DB课程的成绩,请编程计算出总成绩,写在0值处。编每个程序时,要求先画出流程图,程序中应该有足够的注释。
assume cs:codesg,___?___, ___?___
datasg segment
dw 54, 74, 71, 52, 0
dw 68, 54, 93, 95, 0
dw 81, 52, 97, 67, 0
dw 98, 77, 69, 99, 0
dw 79, 71, 69, 73, 0
datasg ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start: mov ax, stacksg
mov ss, ___?___
mov sp, ___?___
mov ax, ___?___
mov ds, ax
; 从这儿开始写程序
mov ax,4c00h
int 21h
codesg ends
end start
我的解答:
(1)编程思路及流程图
(2)源程序(缩格规范,有足够的注释)
(3)运行结果
任务3 - 转圈求和
编每个程序时,要求先画出流程图,程序中应该有足够的注释。
(1)写程序,对给出的8个数,将相邻的数求和(最后写第一个数与最后一个数的和),并把结果写在其后。在下面的示例中,求和的结果为3 5 7 9 11 13 15 9。
datasg segment
dw 1, 2, 3, 4, 5, 6, 7, 8
dw 0,0,0,0,0,0,0,0
datasg ends
提示1:相邻的两数,若前一数用[si]指示,相邻的后面一数则为[si+2]
提示2:前7个和数可以用统一的规则做出,最后一个和数,呃,要回头去找,不妨特殊处理。
(1)编程思路及流程图
(2)源程序(缩格规范,有足够的注释)
(3)运行结果
- (选做)若要求将结果写在提供源数据的位置上,而不是在随后的空间中呢?
(1)编程思路及流程图
见上图
(2)源程序(缩格规范,有足够的注释)
(3)运行结果