实验5汇编实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与软件科学学院实验报告
学期:2017至 2018第 2 学期 2018年4月4日
课程名称: 汇编语言专业:信息与计算科学班级: 2015级_5班
实验编号:5实验项目:编程实现大小写字母间的转换
指导教师:冉茂华
姓名:黄玉含学号:2015060512实验成绩:
1、编写汇编程序,将datasg段中每个单词前4个字母改为大写字母,用Debug跟踪其执行过程。
assume cs: codesg, ds:datasg, ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db ‘1. display ’ ; 该字符串占16个字节,不足位以空格填充(下面3个字符串类似)db ‘2. brows ’
db ‘3. replace ’
db ‘4. modify ’
datasg ends
codesg segment
start:
?
codesg ends
end start
代码如下:
assume cs: codesg, ds:datasg, ss:stacksg stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db "1. display "
db "2. brows "
db "3. replace "
db "4. modify "
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov cx,4
mov bx,3
s: mov dx,cx
mov si,0
mov cx,4q
s0: mov al,[bx+si]
and al,11011111B
mov [bx+si],al
inc si
loop s0
add bx,16
mov cx,dx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
结果分析:
○1多重循环要保留高层循环的cx值,可以直接放入寄存器,也可以利用push,pop指令记录在内存。二维数组的存储可以利用寄存器相对变址寻址的方式进行。Ex:[bx,bi]和[bx
,di]
○2大小写转换:小写转大写:and 11011111B
大写转小写:or 00100000B
○3二维数组用基址变址寻址。