. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->包含多个段的程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验五(5)我这样写有问题吗?  [待解决] 回复[ 2次 ]   点击[ 343次 ]  
kingsgg
[帖 主]   [ 发表时间:2012-03-08 23:45 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01
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
c segment
    db 0,0,0,0,0,0,0,0
c ends
code sebment
start:
    mov ax,a    -->这条不要        (这里我觉得直接用CS的地址比较好,但不知为
    mov ss,ax   -->这条也不要       什么执行后计算结果出错了!有人给个意见吗?)
    mov ax,b
    mov ds,ax
    mov ax,c
    mov es,ax
    mov bx,0
    mov ax,0    
    mov cx,8
s:  mov al,ss:[bx]             (这里我的想法是:mov al,cs:[bx])
    add al,ds:[bx]              
    mov es:[bx],al
    add bx,1
    loop s 
    mov ax,4c00h
    int 21h

code ends
end start

用debug执行到mov ax,4c00h后,
DS=0C88 ES=0C89 SS=0C87 CS=08CA IP=0025
-d 0c89:0 f
0c89:0000  02 04 06 08 0A 0C 0E 10-00 00 00 00 00 00 00 00

-d 0c88:0 f
0c89:0000  01 02 03 04 05 06 07 08-00 00 00 00 00 00 00 00

-d 0c87:0 f
0c89:0000  01 02 03 04 05 06 07 08-00 00 00 00 00 00 00 00

请问这个程序有问题吗,谢谢给出意见!还能再精简一下吗?
tomato
[第1楼]   [ 回复时间:2012-03-09 23:57 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
程序写的挺好,没问题。

因为a段的地址和代码段的地址不同,所以,不能去掉前两条指令。
kingsgg
[第2楼]   [ 回复时间:2012-03-11 20:07 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01
感谢tomato提出的意见,给了新人的我很大的鼓励!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved