鱼C论坛

 找回密码
 立即注册
查看: 1896|回复: 10

初阶九求助?

[复制链接]
发表于 2014-8-20 15:09:44 | 显示全部楼层 |阅读模式

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

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

x
  1. assume cs:codesg,ds:datasg,ss:stacksg

  2. datasg segment
  3. db 'Welcome to masm!'
  4. db 02h,24h,71h
  5. datasg ends

  6. stacksg segment
  7. dw 8 dup(0)
  8. stacksg ends

  9. codesg segment

  10. start:
  11.         mov ax,datasg
  12.                 mov ds,ax
  13.                 mov ax,stacksg
  14.                 mov ss,ax
  15.                 mov ax,0b872h
  16.                 mov es,ax
  17.                 mov bx,0
  18.                 mov di,0
  19.                 mov si,16
  20.             mov cx,3
  21.                
  22.        

  23.    s0:  push cx
  24.                 push si
  25.                 push di
  26.                
  27.              mov cx,11
  28.         s:        mov al,[bx]
  29.                 mov es:[di],al
  30.                
  31.                 mov ah,[si]
  32.                 mov es:[di+1],ah
  33.                
  34.                 add di,2
  35.                 add bx,1
  36.                 loop s
  37.                
  38.                 pop di
  39.                 pop si
  40.                 pop cx
  41.                 add di,80
  42.                 add si,1
  43.                
  44.                 loop s0
  45.                

  46.                 mov ax,4c00h
  47.                 int 21h
  48.                
  49.                 codesg ends
  50. end start

  51.                
复制代码

实验九,在DEBUG中二次用查的结果不一样?
第一次,D B872:0 F
第二次,D B872:0




实验九.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-20 15:11:42 | 显示全部楼层
ES 段地址为:B872,DI=0

为什么二次查的结果不一样,而且下面往,B872:0写东西,写不进去??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 15:20:15 | 显示全部楼层
实验九,错在哪里了,真的找不到拉!

第46条: ADD DI,80    ; DI增加80个字节,换到下一行同一列位置,这里有问题么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 15:23:59 | 显示全部楼层
B872:000  为什么一直在变呀???
一直在变.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 15:40:28 | 显示全部楼层
实验九,得不到正确结果,请高手指点{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 15:59:45 | 显示全部楼层
费了好几个小时,找到问题改好了:loveliness:

  1. assume cs:codesg,ds:datasg,ss:stacksg

  2. datasg segment
  3. db 'Welcome to masm!'
  4. db 02h,24h,71h
  5. datasg ends

  6. stacksg segment
  7. dw 8 dup(0)
  8. stacksg ends

  9. codesg segment

  10. start:
  11.         mov ax,datasg
  12.                 mov ds,ax
  13.                 mov ax,stacksg
  14.                 mov ss,ax
  15.                 mov ax,0b872h
  16.                 mov es,ax
  17.                 mov bx,0
  18.                 mov di,0
  19.                 mov si,16
  20.             mov cx,3
  21.                
  22.        

  23.    s0:  push cx
  24.                 push si
  25.                 push di
  26.                 push bx
  27.        
  28.              mov cx,16
  29.         s:        mov al,[bx]
  30.                 mov es:[di],al
  31.                
  32.                 mov ah,[si]
  33.                 mov es:[di+1],ah
  34.                
  35.                 add di,2
  36.                 add bx,1
  37.                 loop s
  38.                
  39.                 pop bx
  40.                 pop di
  41.                 pop si
  42.                 pop cx
  43.                 add di,160
  44.                 add si,1
  45.                
  46.                 loop s0
  47.                

  48.                 mov ax,4c00h
  49.                 int 21h
  50.                
  51.                 codesg ends
  52. end start

  53.                
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-20 16:04:36 | 显示全部楼层
程序虽得到了正确结果,但还有问题:

段B872,为什么写不进去数据???,几个用D命令查看,为什么B872:0内的数据一直在变?我与进去的数据确找不到…………,那么,为什么还能得到结果????


                                 请高手回{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-20 23:33:33 | 显示全部楼层
难道是堆栈的操作?:dizzy:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-21 20:29:28 | 显示全部楼层
小靚同学Leon 发表于 2014-8-20 23:33
难道是堆栈的操作?

堆栈只是为,保存数据不被更改;
如我前面一直错找不到原因,就是BX,没保存;

现在是我在DEBUG里用D命查看段地址B872内的,数据一直在改变;如果说改变是因为,显卡一直在刷新的话,那么,我为什么还能得到正确的结果:dizzy:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-21 21:19:03 | 显示全部楼层
haiouda 发表于 2014-8-21 20:29
堆栈只是为,保存数据不被更改;
如我前面一直错找不到原因,就是BX,没保存;

只能说明最后确实是写进去了,但是内存数据却是在动态的变化着。
好像说不通,期待精彩答案{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-21 22:44:32 | 显示全部楼层
⊙﹏⊙b汗,上课没认真,看着都很熟悉,凑到一起就不认识了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-12 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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