. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->第一个程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为什么不是我要的结果  [待解决] 回复[ 2次 ]   点击[ 551次 ]  
onlykey
[帖 主]   [ 发表时间:2008-11-12 10:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-17 09:51
本意是要将寄存器中的内容输出,但输出结果为什么不一样:
    源代码:
       DATA SEGMENT 
    DATABLK DB 10H,20H,30H,40H,50H
    RESUL DB ?
DATA ENDS
   
CODE SEGMENT 
   ASSUME   CS:CODE,DS:DATA
   START:
         MOV AX,DATA
         MOV DS,AX
         MOV AL,DATABLK
         ADD AL,DATABLK+1
         ADD AL,DATABLK+2
         ADD AL,DATABLK+3
         ADD AL,DATABLK+4

         MOV DL,AL
         MOV AH,02H
         INT 21H

         MOV AH,4CH
         INT 21H

CODE ENDS
     END START


     希望各位老师和同学帮我解答一下。谢谢。
mouse
[第1楼]   [ 回复时间:2008-11-12 15:42 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
楼主的这个程序不是王爽老师汇编书的程序吧,
CODE SEGMENT  
   ASSUME   CS:CODE,DS:DATA 
-------------------
很多书上都这样写,不过为什么要这样设计呢?改成下面这样不更让人好理解,王爽老师的书就着这么写的,在功能上没有任何差别~
ASSUME   CS:CODE,DS:DATA 
CODE SEGMENT
CODE ENDS  

王爽老师汇编书上的第一个程序不会这么的难(这里面涉及的知识已经很多了,光是中断就能讲解很多,对初学者这样很不合适)

其实楼主的问题很简单,是使用中断的问题,就比如使用c中的库函数,楼主用错了一样。
中断说简单了就是子程序,也就是库函数,至于他的原理可以看看书中断的章节。下面是楼主使用中断显示字符的说明::
功能02H 
功能描述:向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满 
入口参数:AH=02H 
DL=待输出字符的ASCII码 
出口参数:无
--------------
注意dl是输出字符的ascii值。

以此类推,MOV AH,4CH 
         INT 21H的作用呢,楼主不知道话可以查查api
onlykey
[第2楼]   [ 回复时间:2008-11-14 00:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-17 09:51
这个程序不是王爽老师书上的。
     mouse能不能再讲明白一点,我在百度上搜索不到。
     dl为什么输出的是ASCII码呢?   如果我要输出的是数据那么该怎么写?
     从程序中就可以看见最后结果为250H。    如果我要在屏幕上输出这个结果。
     该怎么写这个程序?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved