实验6实践课程中的程序
(1)将课程中所有讲解过的程序上机调试,用Debug跟踪其执行过程,并在过程中
进一步理解所讲内容。
(2)编程,完成问题中的程序。
问题7·1
用DEBUG查看内存,结果如下:
2000:1000 be 00 06 00 00 00...
写出下面的程序执行后,ax.bx.cx中的内容。
mov ax,2000h
mov ds,ax
MOV BX,1000H
MOV ax,[bx]
mov cx,[bx+1]
add cx,[bx+2]
ax=00beh,bx=1000h,cx=0600h+0006h=0606h
问题7·2
用寄存器SI和DI实现将字符串'welcome to masm!'复制到它19:35 2011-8-25后面的数据区中。
assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
db '................'
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
mov si,16
xor di,di
mov cx,si
s:mov al,[di]
mov [si],al
inc si
inc di
loop s
mov ax,4c00h
int 21h
codesg ends
end start
问题7·3
用更少的代码,实现问题7·2中的程序。
assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
db '................'
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
xor di,di
mov cx,8
s:mov ax,[di]
mov [di+16],ax
inc di
Inc di
loop s
mov ax,4c00h
int 21h
codesg ends
end start
问题7·4
用debug查看内存,结果如下:
2000:1000 be 00 06 00 00 00 ...
写出下面的程序执行后,ax.bx.cx中的内容。
MOV ax,2000h
mov ds,ax
mov bx,1000h
mov si,0
mov ax,[bx+si]
inc si
mov cx,[bx+si]
inc si
mov di,si
add cx,[bx+di]
ax=00be,bx=1000h,cx=0606h
问题7·5
用debug查看内存,结果如下:
2000:1000 be 00 06 00 6a 22 ...
写出下面程序执行后,ax.bx.cx的内容。
mov ax,2000h
mov ds,ax
mov bx,1000h
mov si,0
mov ax,[bx+2+si]
inc si
mov cx,[bx+2+si]
inc si
mov di,si
mov bx,[bx+2+di]
ax=6,bx=226ah,cx=6a00h
问题7·6
编程,将datasg段中每个单词的头一个字母改为大写字母。
assume cs:codesg,ds:datasg
datasg segment
db '1. file'
db '2. edit'
db '3. search'
db '4. view'
db '5. options'
db '6. help'
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
xor si,si
mov cx,6
s:
mov al,[si+3]
and al,0dfh
mov [si],al
add si,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start
问题7·7
编程,将datasg段的每个单词改写成大写字母。
assume cs:code,ds:datasg
datasg segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
datasg ends
code segment
startmov ax,datasg
mov ds,ax
xor di,di
mov cx,4
s:mov al,[di]
and al,0dfh
mov [di],al
mov al,[di+1]
and al,0dfh
mov [di+1],al
mov al,[di+2]
and al,0dfh
mov [di+2],al
add di,4
loop s
mov ax,4c00h
int 21h
code ends
end start
问题7·8
仔细阅读上面的程序,看看有什么问题。
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0:mov si,0
mov cx,3
s: mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s
add bx,16
loop s0
在s0处改写了cx的值,造成内循环只执行了3次,外循环只执行了1次。
问题7·9
编程,将data段中的每个单词的前四个字母改成大写字母。
assume cs:code,ss:stack,ds:data
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1.display'
db '2.brows'
db '3.replace'
db '4.modify'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov cx,4
mov bx,3
s:push cx
mov cx,4
s1:mov al,[bx]
and al,0dfh
mov [bx],ax
inc bx
loop s1
pop cx
add bx,9
loop s
mov ax,4c00h
int 21h
code ends
end start
- [kanwangxue] 感觉楼主很乖的。有点孩子气。呵呵。 01/27 08:58
- [kanwangxue] it界,进去干嘛啊,到时候自己牛比了,首先写一个自己的语言,自己用。进入IT界不就是随波做流吗/?他 01/27 08:57
- [kanwangxue] 哥们,不要为了赚钱而学计算机。 计算机是年轻时候干的, 30岁后可以开始想赚钱,年轻嘛,不要这么悲 01/27 08:50
- [游客] 怎么说? 01/26 16:22
- [游客] 你这不行啊,差远了! 01/10 22:29
- [chinatree] 谢谢你。相信你也会成功的。 01/09 14:22
- [landyking] 哥们儿,好久不见。相信你会成功的。 12/02 23:34
- [chinatree] 哇哇,被挖坟了。莫生气,只是感觉谦虚些好,就算你的程序真的是史上最强的,也别说出来嘛,自己偷着乐就行 11/20 00:41
- [xiaoyao2012] 你的程序和我的程序比较也不见得你的程序又节约空间,在某种意义上说你的程序用了没学的指令,所以不见得你 11/19 15:39
- [heliang6291] 一起加油啊 07/02 02:45
- [游客] 急需一个汇编程序大作业。。。。。。。。。。。。。。。。。。。??? 12/28 16:50
- [游客] 这么多人喜欢你,我嫉妒了。但你不可以喜欢那么多,允许你在我不需要你的时候帮别人。如果我需要立叫立到。 11/13 13:11
- [tily] 兄弟 我来看你啦 呵呵 最近可好呀 09/26 22:17
- [stqcw] 能加我qq吗?1270911891 我在做课程设计2的时候 遇到点问题 09/24 09:16
- [stqcw] 能加我qq吗?1270911891 我的环境还是有点问题。按下A的时候不能显示满屏的A 09/20 09:36
- [stqcw] 牛人 我在xp里面运行王爽 汇编第二版 p280的例子 按下esc键没反应 呀 怎样在虚拟机里配置一 09/17 15:18
- [landyking] 呵呵,交个朋友,共同学习. 09/08 00:03
- [luyingdzx] 能知道你的QQ吗?或者请加一下我的QQ271190440,可以吗 虽然在论坛能获得解答,但是有的问 08/07 21:32