| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 943 人关注过本帖
标题:这是看的一个汇编程序,但在masm上运行不了,是什么原因呢?由于本人刚学汇 ...
只看楼主 加入收藏
fan20121221
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2012-12-10
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:6 
这是看的一个汇编程序,但在masm上运行不了,是什么原因呢?由于本人刚学汇编,求高手帮忙注释一下,有好多都看不懂
STACK SEGMENT STACK
      DW 200 DUP (?)
STACK ENDS
DATA SEGMENT
      SPACE DB 1000 DUP (' ')
      PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ')
              DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ')
              DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ')
      DBUFFER DB 8 DUP (':'),12 DUP (' ')
      DBUFFER1 DB 20 DUP (' ')
      STR  DB 0DH,0AH, 'PLEASE INPUT DATE(D) OR TIME(T) OR QUIT(Q): $'
DATA ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,0001H          ;设置显示方式为40*25彩色文本方式            
       INT 10H
       MOV AX,DATA
       MOV DS,AX
       MOV ES,AX
       MOV BP,OFFSET SPACE      
       MOV DX,0B00H
       MOV CX,1000
       MOV BX,0040H
       MOV AX,1300H
       INT 10H
       MOV BP,OFFSET PATTERN ;显示矩形条     
       MOV DX,0B00H
       MOV CX,120
       MOV BX,004EH
       MOV AX,1301H
       INT 10H
       LEA DX,STR            ;显示提示信息
       MOV AH,9
       INT 21H
       MOV AH,1              ;从键盘输入单个字符
       INT 21H
       CMP AL,44H            ;AL='D'?
       JNE A
       CALL DATE             ;显示系统日期
A:     CMP AL,54H            ;AL='T'?
       JNE B                 
       CALL TIME             ;显示系统时间            
B:     CMP AL,51H            ;AL='Q'?            
       JNE START
       MOV AH,4CH            ;返回dos状态
       INT 21H

DATE   PROC NEAR             ;显示日期子程序
DISPLAY:MOV AH,2AH           ;取日期
       INT 21H
       MOV SI,0
       MOV AX,CX
       MOV BX,100
       DIV BL
       MOV BL,AH
       CALL BCDASC1         ;日期数值转换成相应的ASCII码字符
       MOV AL,BL
       CALL BCDASC1
       INC SI
       MOV AL,DH
       CALL BCDASC1
       INC SI
       MOV AL,DL
       CALL BCDASC1
       MOV BP,OFFSET DBUFFER1
       MOV DX,0C0DH
       MOV CX,20
       MOV BX,004EH
       MOV AX,1301H
       INT 10H
       MOV AH,02H          ;设置光标位置
       MOV DX,0300H
       MOV BH,0
       INT 10H
       MOV BX,0018H
REPEA: MOV CX,0FFFFH       ;延时
REPEAT:LOOP REPEAT
       DEC BX
       JNZ REPEA
       MOV AH,01H          ;读键盘缓冲区字符到AL寄存器
       INT 16H
       JE  DISPLAY
       JMP START
       MOV AX,4C00H
       INT 21H
       RET
DATE  ENDP

TIME   PROC NEAR        ;显示时间子程序
DISPLAY1:MOV SI,0
       MOV BX,100
       DIV BL
       MOV AH,2CH       ;取时间
       INT 21H
       MOV AL,CH
       CALL BCDASC      ;将时间数值转换成ASCII码字符
       INC SI
       MOV AL,CL
       CALL BCDASC
       INC SI
       MOV AL,DH
       CALL BCDASC
       MOV BP,OFFSET DBUFFER
       MOV DX,0C0DH
       MOV CX,20
       MOV BX,004EH
       MOV AX,1301H
       INT 10H
       MOV AH,02H
       MOV DX,0300H
       MOV BH,0
       INT 10H
       MOV BX,0018H
RE:    MOV CX,0FFFFH
REA:   LOOP REA
       DEC BX
       JNZ RE
       MOV AH,01H
       INT 16H
       JE  DISPLAY1
       JMP START
       MOV AX,4C00H
       INT 21H
       RET
TIME  ENDP

BCDASC PROC NEAR                ;时间数值转换成ASCII码字符子程序
       PUSH BX
       CBW
       MOV BL,10
       DIV BL
       ADD AL,'0'
       MOV DBUFFER[SI],AL
       INC SI
       ADD AH,'0'
       MOV DBUFFER[SI],AH
       INC SI
       POP BX
       RET
BCDASC ENDP

BCDASC1 PROC NEAR              ;日期数值转换成ASCII码字符子程序
       PUSH BX
       CBW
       MOV BL,10
       DIV BL
       ADD AL,'0'
       MOV DBUFFER1[SI],AL
       INC SI
       ADD AH,'0'
       MOV DBUFFER1[SI],AH
       INC SI
       POP BX
       RET
BCDASC1 ENDP
CODE   ENDS
       END START


2012-12-11 22:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
这是16位汇编

现在纯16位环境已经不多见了  你确认你有纯16位环境

DO IT YOURSELF !
2012-12-11 22:50
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:2 
以下是引用wp231957在2012-12-11 22:50:14的发言:

这是16位汇编

现在纯16位环境已经不多见了  你确认你有纯16位环境
没法啊 学的还是这个 有什么办法呢
2012-12-12 11:36
pardream
Rank: 1
等 级:新手上路
帖 子:16
专家分:8
注 册:2010-7-9
收藏
得分:2 
程序用masm可以编译,在Borland tasm下不行。有些保留字。
你可以下载一个Dosbox的软件,模拟dos环境,在其下学习使用。
也可以安装vmware,建立一个dos虚拟机,安装dos环境
程序能启动运行,但输入T, D, Q时都不能正常执行,我没看具体的代码,自行调试吧。
2012-12-13 18:27
Erison
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2012-12-7
收藏
得分:0 
回复 楼主 fan20121221
这个程序是对的~~
附图:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

你在好好调试一下吧~~
2012-12-14 12:55
Erison
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2012-12-7
收藏
得分:0 
回复 楼主 fan20121221
这个程序是对的~~
附图:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

你在好好调试一下吧~~
2012-12-14 12:57
sdztzyh1
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-3
收藏
得分:0 
不懂,新手飘过。请问下汇编的基础从哪学起?
2012-12-31 08:52
快速回复:这是看的一个汇编程序,但在masm上运行不了,是什么原因呢?由于本人刚 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.071773 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved