. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->《汇编语言(第2版)》勘误区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验13 (3) 对书上面代码的疑问 请大家发表下意见  [已解决] 回复[ 2次 ]   点击[ 599次 ]  
q470393267
[帖 主]   [ 发表时间:2009-04-19 09:40 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2009-04-04 22:58
assume cs:code 
code segment 
s1:      db 'Good,better,best,','$' 
s2:      db 'Never let it rest,','$' 
s3:      db 'Till good is better,','$' 
s4:      db 'And better,best.','$' 
s:       dw offset s1,offset s2,offset s3,offset s4 
row:     db 2,4,6,8 

start:   mov ax,cs 
         mov ds,ax 
         mov bx,offset s 
         mov si,offset row 
         mov cx,4 
ok:      mov bh,0 
         mov dh,[si]         ;[si]为所填内容 
          mov dl,0 
         mov ah,2 
         int 10h 

         mov dx,[bx]         ;[bx]为所填内容 
          mov ah,9 
         int 21h 
         inc si 
         add bx,2            ;这两条指令为所填内容 
         loop ok 

         mov ax,4c00h 
         int 21h 
code ends 
end start 
  按题意上面所填的代码应不会错,可是书上面一开始bx中存标号S的偏移地址值,到ok中置光标的程序中又对bh赋值为0而没有保护之前bx中的值我觉得这样是错的,虽然这里程序不会错那也只是因为s的偏移地址的高八位本身为0即bh=0,这样子到底mov bh,0这条指令没有意义还是书本漏掉了保护bx的值呢~ 本人只是才学到13章感觉这里有点问题,也可能是我错了 希望大家别笑话啊~
q470393267
[第1楼]   [ 回复时间:2009-04-26 19:47 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2009-04-04 22:58
收摊~
q470393267
[第2楼]   [ 回复时间:2009-04-26 19:47 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2009-04-04 22:58
此贴由 贴主 于 [ 2009-04-26 19:47 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved