帮我看看这个问题。

solrac 2001-11-02 01:45:53
TITLE dshape-- construct a shape from a shape table
data_seg SEGMENT
car DB 7
DB 52h,70h,0,0
DB 0b1h,70h,0,1
DB 0bdh,7,0,1
DB 0dbh,7,0,1
DB 4fh,7,1,0
DB 4fh,7,0,-3
DB 2,7,-2,1
data_seg ENDS
;----------------------------------------
code_seg SEGMENT
ASSUME CS:code_seg,DS:data_seg
main PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,data_seg
MOV DS,AX
CALL CLear_screen
LEA DI,car
MOV DH,10
MOV DL,10
CALL display_shape
RET
main ENDP
clear_screen PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,6
MOV AL,0
MOV CH,0
MOV CL,0
MOV DH,24
MOV DL,79
MOV BH,7
INT 10h
POP DX
POP CX
POP BX
POP AX
RET
clear_screen ENDP
;---------------------------------------------
display_shape PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AH,0fh
INT 10h
SUB CH,CH
MOV CL,[DI]
INC DI
next_char:
ADD DH,[DI+2]
ADD DL,[DI+3]
MOV AH,2
INT 10h
MOV AL,[DI]
MOV BL,[DI+1]
PUSH CX
MOV CX,1
MOV AH,09
INT 10h
POP CX
ADD DI,4
LOOP next_char
POP DI
POP DX
POP CX
POP BX
POP AX
RET
display_shape ENDP
;-----------------------------------------------------
code_seg ENDS
END

这是书上的原题,清华大学IBM-PC汇编语言,用字符画一个汽车的图形。
能够通过编译。但是在运行的时候,显示遇到无效指令。不知道为什么?
还有就是,我在编程的时候,调用dos里的09(显示字符串)总是能够通过编译,但在运行的时候就显示遇到无效指令,不知道是为什么?
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
csq_csq 2001-11-05
  • 打赏
  • 举报
回复
是不是你打错了呀
zara 2001-11-03
  • 打赏
  • 举报
回复
原来的程序使用int 10h ah=09h 以BL中的属性输出AL中的字符; 你使用int 21h ah=09h输出字符串当然不会得到正确的结果. 至于出现非法操作, 可能和DX中的值有关, 多数是没有适当的$串结束字符造成了.
solrac 2001-11-02
  • 打赏
  • 举报
回复
能运行是在什么环境下?是什么操作系统?
我用的是win2000。
CodeDemon 2001-11-02
  • 打赏
  • 举报
回复
我试过了,没有错误,可以执行!
CNer 2001-11-02
  • 打赏
  • 举报
回复
我看看。。。
CNer 2001-11-02
  • 打赏
  • 举报
回复
应该没出入的。。。。
solrac 2001-11-02
  • 打赏
  • 举报
回复
是不是8086里面的指令集和我们现在用的指令集有出入?
vBin 2001-11-02
  • 打赏
  • 举报
回复
程序我编译能过,未出错。
运行后,也未显示任何错误,只是屏幕上显示一些红红绿绿的东西
就好像中了病毒一样(DOS下的)
也没有什么汽车图形。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧