回 帖 发 新 帖 刷新版面

主题:[求助]关于输出的,大侠救命呀~~~~

已知某班学生的数学成绩按学号(从1开始)从小到大的顺序排列在score表中,要查的学生学号放在变量no中,查表结果放在变量maths中。

INCLUDE io.lib
DATAS SEGMENT
    PROMT1 DB '         **********************************',13,10,'$'
    PROMT2 DB '            PROGRAM OF THE STUDENT SCORE',13,10,'$'
    PROMT3 DB '                        KMUST',13,10,'$'
    PROMT4 DB '                      JIA QI NAN',13,10,'$'
    PROMT5 DB '                       040405036',13,10,'$'
    PROMT6 DB '  PLEASE ENTER THE STUDENT NUMBER',13,10,'$'
    PROMT7 DB '  THE MATHS SCORE IS:',13,10,'&'
    SCORE DB 5 DUP (60d,70d,80d,90d,100d);此处输入数据段代码  
    NO DB ?
    MATHS DB ?
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    OUTPUT PROMT1
    OUTPUT PROMT2
    OUTPUT PROMT3
    OUTPUT PROMT4
    OUTPUT PROMT5
    OUTPUT PROMT1
    OUTPUT PROMT6
    LEA BX,SCORE;此处输入代码据段代码
    MOV CL,1
    INPUT NO
    MOV DL,NO
XUNHUAN:
    CMP DL,CL
    JE XIANSHI
    ADD CX,1
    ADD BX,1
    JMP XUNHUAN
XIANSHI:
  OUTPUT PROMT1
  ;OUTPUT PROMT7
 
  mov DL, [BX]
  ADD DL,30H
  MOV AH,2
  INT 21H
  OUTPUT PROMT1

    INT 21H
CODES ENDS
    END START
那个宏库是自己做的:
;io.lib
OUTPUT  MACRO  X
  LEA DX,X
  MOV AH,9
  INT 21H
  ENDM
INPUT MACRO  Y
  MOV AH,1
  INT 21H
  MOV Y,AL
  ENDM 
SHUCHU  MACRO Z
  MOV AH,2
  MOV AL,Z
  ADD AL,30H
  INT 21H
  ENDM


输出有错误,是乱码,我是新手,刚学汇编,大侠帮我看一下,谢谢了,无限感激

回复列表 (共2个回复)

沙发

没人来看呀,没天理呀~~~~~

板凳

问题主要在这里
  mov DL, [BX]
  ADD DL,30H
[BX]中取出的是8位的二进制数,并非一位十进制数,
加上30H,得到的不是一位十进制数的ASCII,
所以可能出乱码

我来回复

您尚未登录,请登录后再回复。点此登录或注册