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

我的博客

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

[2009-04-11 11:00] 实验5

第五题.

assume cs:code

a segment

        db 1,2,3,4,5,6,7,8
        
a ends

b segment 
        
        db 1,2,3,4,5,6,7,8
        
b ends

c1 segment
        
        db 0,0,0,0,0,0,0,0
        
c1 ends

code segment
        
        start:mov ax,a
        
                        mov ds,ax
                        
                        mov ax,b
                        
                        mov es,ax
                        
                        mov ax,c1
                        
                        mov ss,ax
                        
                        mov bx,0
                        
                        mov cx,8
                        
                s:      mov ax,ds:[bx]
                
                        mov dx,es:[bx]
                        
                        add ax,dx
                        
                        mov ss:[bx],ax
                        
                        inc bx
                        
                        loop s
                        
                        mov ax,4c00h
                        
                        int 21h
        
        
        
code ends

end start


ps:不知道为什么用c做code段老是报错.改成才c1就可以了.莫名其妙

我用的编辑器是masmplus,奇怪..我的想法是把a段地址用ds段寄存器

来保存,b段地址用es段寄存器来保存.c1段用ss段寄存器来保存.然后

在循环里面依次叠加并放入c1段中.

刚开始的时候觉得ss是栈段寄存器.不敢用.用的是ds来保存c1段的地址

.结果程序报错.难道ds段保存的是程序的地址,不能由我们自己乱改写

么?换成ss就ok了.还以为ss只能作为栈段使用.又想起cpu根本不认识

什么栈,是我们人为定义的就懂了.ss这里可以用.

第六题.

assume cs:code

a segment

        dw 1,2,3,4,5,6,7,8
        
a ends

b segment
        
        db 0,0,0,0,0,0,0,0
        
b ends

code segment
        
        start: mov ax,b
                        
                        mov ss,ax
                        
                        mov sp,10H
                        
                        mov dx,a
                        
                        mov es,dx
                        
                        mov cx,8
                        
                        mov bx,0
                        
                s:        push es:[bx]
                
                        add bx,2
                
                        loop s
                        
                        mov ax,4c00h
                        
                        int 21h
        
        
        
code ends

end start


ps:add bx,2这行写错为add dx,2 就这个错误找了半个小时..疯狂中...

-d es:0 f
0BF4:0000  01 00 02 00 03 00 04 00-05 00 06 00 07 00 08 00   ................
-d ss:0 f
0BF5:0000  08 00 07 00 06 00 05 00-04 00 03 00 02 00 01 00   ................
-q

C:\>
评论次数(2)  |  浏览次数(655)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-04-15 15:48  ]

不知道为什么用c做code段老是报错.改成才c1就可以了.莫名其妙 

我用的编辑器是masmplus,奇怪
==================
博主试没试在masm5.0下进行编译呢?是不是用的集成环境?如果用的继承环境,c这种标号也许是被保留的字符,所以才会有问题。

[  kingwrcy   发表于  2009-07-31 15:09  ]

多谢提示.已经过去接近4个月了.由于工作原因,汇编一直没碰了.哎.准备重新温习下.

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