鱼C论坛

 找回密码
 立即注册
查看: 3499|回复: 7

实验题5

[复制链接]
发表于 2011-3-9 13:22:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
5.程序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果存到c段中

老师给看看做的对吗?
  1. assume cs:code
  2.   a segment
  3.         db 1,2,3,4,5,6,7,8
  4.   a ends
  5.   b segment
  6.         db 1,2,3,4,5,6,7,8
  7.   b ends
  8.   c segment
  9.          db 0,0,0,0,0,0,0,0
  10.   c ends

  11.   code segment
  12.     start: mov ax,c
  13.               mov ss,ax
  14.               mov sp,8
  15.               
  16.               mov bx,0
  17.               mov cx,8
  18.          s:  mov ax,a
  19.               mov ds,ax
  20.               mov al,ds:[bx]
  21.               mov dx,b
  22.               mov ds,dx
  23.               add al,ds:[bx]
  24.               push al
  25.               inc dx
  26.               loop s
  27.          
  28.               mov ax,4c00h
  29.               int 21h
  30.          code ends
  31. end start
  32.                           
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-9 13:43:01 | 显示全部楼层
本帖最后由 china0008 于 2011-3-9 13:53 编辑

思路是对的。  但是用 push的方便保存结果这里,忽略了一个问题。压栈是从高地址到低地址压的。也就是说你把 1+1 的结果放在了最后。这样跟上面的数据是不对齐的。还有一个问题 。 栈操作是以 字 单元为单位的   ,本题的结果一 字节 为单位。  栈空间明显不够用。 所以还是用mov指令吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-9 14:27:55 | 显示全部楼层
本帖最后由 超越自我 于 2011-3-9 22:52 编辑
  1. assume cs:code ,ds:data ,ss:stack

  2. data segment
  3.         dw 1,2,3,4,5,6,7,8
  4.         dw 1,2,3,4,5,6,7,8
  5. data ends
  6.    
  7. stack segment
  8.          dw 0,0,0,0,0,0,0,0
  9. stack ends

  10. code segment

  11. start: mov ax,data
  12.        mov ds,ax
  13.        mov ax,stack
  14.        mov ss,ax
  15.        mov sp,16
  16.        mov bx,0

  17.        mov cx,8
  18. s:     mov ax,[bx]
  19.        add ax,[bx+16]
  20.        push ax
  21.        inc bx
  22.        loop s
  23.      
  24.        mov ax,4c00h
  25.        int 21h

  26. code ends

  27. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-3-9 17:22:46 | 显示全部楼层
回复 1# 三好学生


    start: mov bx,0
              mov cx,8

         s:  mov ax,a
              mov ds,ax
              mov al,ds:[bx]   
              mov dx,b
              mov ds,dx        
              add al,ds:[bx]     ; a b段相加
         mov dx,c
              mov ds,dx
              mov ds:[bx],al
              inc dx
              loop s
         
              mov ax,4c00h
              int 21h
   
         code ends
      
经过老师的提示,我先把a b段相加 然后在把相加后的al字节数据在放到c 段里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-15 10:57:19 | 显示全部楼层
我是这样做的,不知道对不对:
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  segment
  start: mov ax,b
           mov es,ax
           mov ax,c
           mov ds,ax
           mov bx,0
           
           mov cx,8
      s:  mov al,es:[bx]
           mov [bx],al
           inc  bx
           loop s
          mov bx,0
          mov cx,8
     s1:   mov al,cs:[bx]
           add  [bx],al
           inc   bx
           loop s1
          mov ax,4c00h
          int   21h
    code  ends
   end  start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-15 11:12:32 | 显示全部楼层
本帖最后由 china0008 于 2011-3-15 13:29 编辑

第六题我是这样做的,请各位老师指教

  1. assume  cs:code
  2.    a    segment
  3.      dw   1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
  4.     a    ends
  5.     b    segment
  6.      dw   0,0,0,0,0,0,0,0
  7.     b    ends
  8.    code  segment
  9. start:   mov ax,cs
  10.             mov ss,ax
  11.             mov sp,48
  12.             mov bx,0
  13.             mov cx,8
  14.      s:    push cs:[bx]
  15.             add bx,2
  16.             loop s
  17.             mov ax,4c00h
  18.             int  21h
  19.     code  ends
  20.     end   start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-15 13:33:11 | 显示全部楼层
楼上做的没错。完全正确。你不使用ds是为了减少代码长度吧。呵呵。很好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-10 11:35:26 | 显示全部楼层
3楼的 inc bx是不是应该改为(bx) = (bx) + 2?
6楼:a,b段的段地址是CS的段地址吗?也就是说SS段里存放的好像不是1,2,。。。0ffh ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 22:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表