汇编网首页登录博客注册
chinatree的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2011-08-26 00:26] 实验6实践课程中的程序

实验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
评论次数(2)  |  浏览次数(594)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2011-08-26 08:55  ]

看着没问题。

[  killkk   发表于  2011-08-26 12:32  ]

顶一个,相互学习。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码