各位大佬好,请问dosbox能运行txt文件么

今天在网上看见了世界黑客编程大赛第一名的作品(97年Mekka ’97 4K Intro比赛),然后觉得很神奇
想自己弄一个试试,可是我电脑是win7 64位的没发直接在cmd下运行debug <d:\1.txt,然后网上说用dosbox可以用debug,可是我只是在网上看到怎么运行exe文件并没有运行txt
文件的,望各位大佬帮忙解答图片说明

2个回答

![图片说明](https://img-ask.csdn.net/upload/201706/08/1496903291_732800.png)图片说明

可以,http://download.csdn.net/detail/caozhy/9737236 下载这个里面有dos 6.22,里面有debug命令,拷贝到dosbox运行程序的目录,执行就可以。

qq_38627480
qq_38627480 运行之后就卡住了
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
汇编里设计了要求输入路径打开文件的程序,在dosbox下运行输入正确路径也提示打不开文件怎么解决

如题,设计了一个输入文件路径后打开相应文件的程序,但是只有在控制台打开时能正确运行,在dosbox下输入路径就不能正常打开了,即使放在同一个位置也不行,求问怎么解决QAQ

汇编dosbox中运行程序,不是debug 1.exe的那种

比如 直接输入 1.exe运行 而不是 debug 1.exe dosbox中运行的程序进入死循环或者无响应状态 如何停止其运行 一般是程序编写出了问题 如何停止它的运行 只能关了dosbox吗

为什么用dosbox运行编写的除法溢出汇编程序没有引发中断?

![电脑自带dos能触发中断程序](https://img-ask.csdn.net/upload/201506/25/1435209098_510953.png) ![dosbox并没有触发中断程序](https://img-ask.csdn.net/upload/201506/25/1435209134_287808.png) 学习了王爽老师编写的汇编语言(第三版)第十二章内中断,我想看看触发除法溢出中断后程序显示提示信息“Divide overflow”于是编写了一个除法溢出的程序 ``` assume cs:code code segment start: mov ax,1000h mov bh,1 div bh mov ax, 4c00h int 21h code ends end start ``` 在dos以及dosbox上运行,一个能够引发中断,一个不能。是不是dosbox不支持中断触发啊?那我接下来需要修改中断程序的话会不会把dos本身自己的中断给覆盖掉?

汇编编写的一copy文件程序,DOXBOX运行,输入文件路径及名时总显示找不到文件,求大佬帮忙运行解决一下。

DATAS SEGMENT fname_buf db 64,? fname db 64 dup(0) ;文件名缓冲区 fnum_s dw ? ;源文件号 fnum_d dw ? ;新文件号 buffer db 512 DUP (?) ;读写缓冲区 msg1 db 0dh,0ah,'Please input the source file path and name:','$' msg2 db 0dh,0ah,'Can not find the file, please input again:','$' msg3 db 0dh,0ah,'Please input the destination file path and name:','$' msg4 db 0dh,0ah,'The destination file is existed...',0dh,0ah,'please enter another name:','$' msg5 db 0dh,0ah,'Error in copying file...',0dh,0ah,'please try again:','$' msg6 db 0dh,0ah,'Error in reading file...',0dh,0ah,'please try again:','$' msg7 db 0dh,0ah,'Error in writing file...',0dh,0ah,'please try again:','$' msg8 db 0dh,0ah,'File copying success!','$' msg9 db 0dh,0ah,'Copy another files?(y/n)','$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS ;---------------------------------------------------------------------------- ;该函数用于输入文件名及路径,并删除输入文件名后的回车符,使字符串为ASCIZ地址 getfname proc ;将保存输入文件名的缓冲区清空 mov si,0 mov cx,64 reset: mov fname[si],0 inc si loop reset ;循环执行reset,将fname字符串置为0 ;--------------------------------------------- ;输入源文件名及路径 lea dx,fname_buf;取地址操作 mov ah,0ah int 21h ;将最后一个回车符换成0,使字符串为ASCIZ地址 mov si,0 set0: cmp fname[si],0dh je set0go inc si jmp set0 set0go: mov fname[si],0 ret getfname endp ;--------------------------------------------- START: MOV AX,DATAS MOV DS,AX ;--------------------------------- ;打开源文件 input: mov dx,offset msg1 mov ah,9 int 21h call getfname lea dx,fname mov ax,3d00h int 21h jnc opensuc lea dx,msg2 mov ah,9 int 21h jmp input opensuc: mov fnum_s,ax ;--------------------------------- ;创建目标文件 mov dx,offset msg3 mov ah,9 int 21h ;判断目标文件是否存在 build: call getfname lea dx,fname mov ax,3d00h int 21h jc notext;有进位时CF=1跳转 ;存在,关闭打开的文件 mov bx,ax mov ah,3eh int 21h mov dx,offset msg4 mov ah,9 int 21h jmp build ;----------------------------- ;目标文件不存在,建立目标文件 notext: mov cx,0 lea dx,fname mov ah,3ch ;建立普通新文件 int 21h jnc save ;建立成功,保存新文件号 mov dx,offset msg5 ;不成功,显示错误信息 mov ah,9 int 21h jmp start ;重新输入 save: mov fnum_d,ax ;保存新文件号 mov ax,3d01h ;以只写方式打开新文件 int 21h readf: mov bx,fnum_s ;取源文件号 mov cx,512 ;读出512个字符 mov dx,offset buffer mov ah,3fh int 21h jnc writef ;读成功,则写 mov dx,offset msg6 ;不成功,显示错误信息,关闭文件 mov ah,9 int 21h jmp exit ;-------------------------- writef: mov bx,fnum_d ;取新文件号 mov cx,ax ;按实际读入字数写文件 mov ah,40h int 21h jnc cmpcx ;写成功 mov dx,offset msg7 ;不成功,显示错误信息,关闭文件 mov ah,9 int 21h jmp exit cmpcx: cmp cx,512 ;判断实际读入的字数是不是512 je readf ;如果是512,说明还没读到文件尾 mov dx,offset msg8 ;显示‘复制成功’ mov ah,9 int 21h exit: mov ah,3eh ;关闭文件 int 21h mov bx,fnum_s mov ah,3eh int 21h ;------------------------------------------------------------------ ;继续复制 again: mov dx,offset msg9 mov ah,9 int 21h mov ah,1 int 21h cmp al,'Y' je start cmp al,'y' je start cmp al,'N' je ok cmp al,'n' je ok jne again ;------------------------------------------------------------------ ok: MOV AH,4CH INT 21H CODES ENDS END START 另外,运行时发生跳转错误,求大佬帮助,能贴出运行截图最好啦![图片说明](https://img-ask.csdn.net/upload/201811/04/1541296201_397282.png) 找不到源文件

为什么安装dosbox出现乱码

求解为什么dosbox安装完后运行会出现乱码?![图片说明](https://img-ask.csdn.net/upload/201505/22/1432263639_348393.png)![图片说明](https://img-ask.csdn.net/upload/201505/22/1432263533_570035.png)

初学汇编,怎么结果运行不出来

因为我的笔记本是64位的系统,所以使用debug的时候,用了dosbox,但是在bosdox下运行,最后结果没有出来,而是直接中断了,这个是怎么回事呢

dosbox debug xxx.exe access deny 怎么办?

如题 写了如下asm程序在dosbox中编译连接无报错,有一个warning:no stack segment ``` MOV DI,1000 MOV CX,8 MOV SI,2000 CLC LOP: MOV AL,[SI] ADC [DI],AL INC SI INC DI LOOP LOP INT 20 ``` exe程序执行不报错, 但是debug xxx.exe 报错access deny 是为什么?我用管理员权限运行了dosbox还是没用。

用dosbox打开debug的指令是什么

用dosbox打开debug的指令是什么?。。。。?。。。。。。。。。。。。。。。

为何DOSbox下的debug中 e 命令 无效?

![图片说明](https://img-ask.csdn.net/upload/201911/25/1574675156_65454.png) 初学汇编语言遇到的问题, 下面的问题标签里面没有汇编语言, 就随便点了一个,见谅!

DOSbox和masmplus的使用

我下载好masmplus并且安装成功,在配置里边选择了编译器为DOSbox,当我在运行的时候,报的错误是Windows.inc里边有代码重复定义,我的系统是64位不知道怎么解决,求帮忙

程序问什么运行不出来

import java.applet.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; //import java.Math.*; public class cal extends Applet { //定义所有需要使用的全局变量 String str="0";//暂存显示屏数据 String sign="null";//暂存符号数据 double num=0;//暂存内部运算数据 boolean change=false;//暂存内部四则运算起用 GridLayout g0,g1;//定义AWT布局部件 JTextField number; Button num_p,num_0,num_1,num_2,num_3,num_4,num_5,num_6,num_7,num_8,num_9; Button act_add,act_mul,act_div,act_sub; Button mat_sin,mat_cos,mat_tan; Button do_ans,do_del; Panel p0,p1; public void init()//主程序部分 { //定义各个控件的样式 number=new JTextField(20);//显示屏 number.setHorizontalAlignment(JTextField.RIGHT); number.setEnabled(false); number.setText("0"); num_p=new Button(".");//小数点的按钮 num_p.setForeground(Color.red); num_p.addActionListener(new getbt()); num_0=new Button("0");//数字0的按钮 num_0.setForeground(Color.red); num_0.addActionListener(new getbt()); num_1=new Button("1");//数字1的按钮 num_1.setForeground(Color.red); num_1.addActionListener(new getbt()); num_2=new Button("2");//数字2的按钮 num_2.setForeground(Color.red); num_2.addActionListener(new getbt()); num_3=new Button("3");//数字3的按钮 num_3.setForeground(Color.red); num_3.addActionListener(new getbt()); num_4=new Button("4");//数字4的按钮 num_4.setForeground(Color.red); num_4.addActionListener(new getbt()); num_5=new Button("5");//数字5的按钮 num_5.setForeground(Color.red); num_5.addActionListener(new getbt()); num_6=new Button("6");//数字6的按钮 num_6.setForeground(Color.red); num_6.addActionListener(new getbt()); num_7=new Button("7");//数字7的按钮 num_7.setForeground(Color.red); num_7.addActionListener(new getbt()); num_8=new Button("8");//数字8的按钮 num_8.setForeground(Color.red); num_8.addActionListener(new getbt()); num_9=new Button("9");//数字9的按钮 num_9.setForeground(Color.red); num_9.addActionListener(new getbt()); act_add=new Button("+");//加法的按钮 act_add.setForeground(Color.red); act_add.addActionListener(new getbt()); act_sub=new Button("-");//减法的按钮 act_sub.setForeground(Color.red); act_sub.addActionListener(new getbt()); act_mul=new Button("*");//乘法的按钮 act_mul.setForeground(Color.red); act_mul.addActionListener(new getbt()); act_div=new Button("/");//除法的按钮 act_div.setForeground(Color.red); act_div.addActionListener(new getbt()); do_ans=new Button("=");//等于的按钮 do_ans.setForeground(Color.red); do_ans.addActionListener(new getbt()); do_del=new Button("del");//删除的按钮 do_del.setForeground(Color.red); do_del.addActionListener(new getbt()); mat_sin=new Button("sin");//sin的按钮 mat_sin.setForeground(Color.red); mat_sin.addActionListener(new getbt()); mat_cos=new Button("cos");//cos的按钮 mat_cos.setForeground(Color.red); mat_cos.addActionListener(new getbt()); mat_tan=new Button("tan");//tan的按钮 mat_tan.setForeground(Color.red); mat_tan.addActionListener(new getbt()); //布局整个计算器 g0=new GridLayout(1,1,10,10);//布局输入输出大体位置 g1=new GridLayout(4,5,10,10); p0=new Panel(); //显示屏的布局 p0.setLayout(g0); p0.add(number); p0.setBounds(0,0,100,50); //按纽的布局 p1=new Panel(); p1.setLayout(g1); p1.add(num_1);//第一排按纽 p1.add(num_2); p1.add(num_3); p1.add(act_add); p1.add(act_sub); p1.add(num_4);//第二排按纽 p1.add(num_5); p1.add(num_6); p1.add(act_mul); p1.add(act_div); p1.add(num_7);//第三排按纽 p1.add(num_8); p1.add(num_9); p1.add(mat_sin); p1.add(mat_cos); p1.add(num_0);//第四排按钮 p1.add(num_p); p1.add(do_ans); p1.add(do_del); p1.add(mat_tan); p1.setBounds(5,60,400,250); p1.setBackground(Color.cyan);//设置按钮背景颜色 setLayout(null); add(p0); add(p1); this.setBackground(Color.cyan);//设置背景整体颜色 } class getbt implements ActionListener //监听作出反应的类 { public void actionPerformed(ActionEvent e)//对每个每个按钮做出响应 { if(e.getSource()==num_0) press0(); else if(e.getSource()==num_1) press1(); else if(e.getSource()==num_2) press2(); else if(e.getSource()==num_3) press3(); else if(e.getSource()==num_4) press4(); else if(e.getSource()==num_5) press5(); else if(e.getSource()==num_6) press6(); else if(e.getSource()==num_7) press7(); else if(e.getSource()==num_8) press8(); else if(e.getSource()==num_9) press9(); else if(e.getSource()==num_p) pressp(); else if(e.getSource()==act_add) pressadd(); else if(e.getSource()==act_mul) pressmul(); else if(e.getSource()==act_div) pressdiv(); else if(e.getSource()==act_sub) presssub(); else if(e.getSource()==mat_sin) presssin(); else if(e.getSource()==mat_tan) presstan(); else if(e.getSource()==mat_cos) presscos(); else if(e.getSource()==do_ans) pressans(); else if (e.getSource()==do_del) pressdel(); } } public void press0()//对按0作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="0"; } else if(str=="0" || sign!="null") { str="0"; } number.setText(str); } public void press1()//对按1作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="1"; } else if(str=="0"|| sign!="null") { str="1"; change=false; } number.setText(str); } public void press2()//对按2作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="2"; } else if(str=="0" || sign!="null") { str="2"; change=false; } number.setText(str); } public void press3()//对按3作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="3"; } else if(str=="0" || sign!="null") { str="3"; change=false; } number.setText(str); } public void press4()//对按4作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="4"; } else if(str=="0" || sign!="null") { str="4"; change=false; } number.setText(str); } public void press5()//对按5作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="5"; } else if(str=="0" || sign!="null") { str="5"; change=false; } number.setText(str); } public void press6()//对按6作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="6"; } else if(str=="0" || sign!="null") { str="6"; change=false; } number.setText(str); } public void press7()//对按7作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="7"; } else if(str=="0" || sign!="null") { str="7"; change=false; } number.setText(str); } public void press8()//对按8作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="8"; } else if(str=="0" || sign!="null") { str="8"; change=false; } number.setText(str); } public void press9()//对按9作出反应 { if(str.length()<16 && str!="0" && change==false) { str+="9"; } else if(str=="0" || sign!="null") { str="9"; change=false; } number.setText(str); } public void pressp()//对按.作出反应 { boolean p=false; for(int i=0;i<str.length();i++) if(str.charAt(i)=='.') p=true; if(str.length()<16 && str!="0" && sign=="null" && p==false) { str+="."; } else if((str=="0" || sign!="null")&& p==false) { str="0."; } number.setText(str); } public void pressadd()//对按+作出反应 { sign="add"; num=Double.parseDouble(str); change=true; } public void presssub()//对按-作出反应 { sign="sub"; num=Double.parseDouble(str); change=true; } public void pressmul()//对按*作出反应 { sign="mul"; num=Double.parseDouble(str); change=true; } public void pressdiv()//对按/作出反应 { sign="div"; num=Double.parseDouble(str); change=true; } public void presssin()//对按sin作出反应 { if(str!="0." && str!="-0" && str!="-0." && str!="0") { sign="null"; num=Double.parseDouble(str); num=Math.sin(num); str=Double.toString(num); if(str.length()>16) str=str.substring(0,16); num=0; } if(str=="0") { sign="null"; num=0; } number.setText(str); } public void presstan()//对按tan作出反应 { if(str!="0." && str!="-0" && str!="-0."&& str!="0") { sign="null"; num=Double.parseDouble(str); num=Math.tan(num); str=Double.toString(num); if(str.length()>16) str=str.substring(0,16); num=0; } number.setText(str); } public void presscos()//对按cos作出反应 { if(str!="0." && str!="-0" && str!="-0.") { sign="null"; num=Double.parseDouble(str); num=Math.cos(num); str=Double.toString(num); if(str.length()>16) str=str.substring(0,16); num=0; } number.setText(str); } public void pressans()//对按=作出反应 { if(sign=="null") number.setText(str); else if(sign=="add") { num+=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else if(sign=="sub") { num-=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else if(sign=="mul") { num*=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else if(sign=="div") { if(num!=0) { num/=Double.parseDouble(str); str=Double.toString(num); number.setText(str); } else { str="0"; number.setText(str); } } sign="null"; } public void pressdel()//对按del作出反应 { if(str.length()>1) { str=str.substring(0,str.length()-1); number.setText(str); } else if(str.length()==1) { str="0"; number.setText(str); } } }

win7 64位系统怎么运行masm.exe

请问怎么才能在win7 64位系统的dos下运行masm?我下载了dosbox也不能将写好的汇编源程序编译

DOS系统下.exe文件转.com文件

在DOS系统下编写了helloworld程序,使用masm进行编译,link进行链接得到了exe文件,想通过exe2bin进行转换,结果显示不成功。原因因该是源程序中使用了DATA数据段和CODE代码段,不止一个SEGMENT了。想知道有什么办法可以解决这个问题吗? 代码: ``` .386 DATA SEGMENT USE16 MSG DB 'HelloWorld!$' DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG MOV AH,9 INT 21H CODE ENDS END BEG ```

关于1997年世界编程大赛冠军作品-无法运行问题-在线等

我参考了文章的作法,却出现下面的问题 我有看一些文章,但是无法处理(电脑有win10 及win7sp1) ![图片说明](https://img-ask.csdn.net/upload/201807/01/1530434307_720369.png) https://blog.csdn.net/fengart/article/details/2280291

初学汇编,使用DOSBOX中使用debug中重复线的内容如何展开

![图片说明](https://img-ask.csdn.net/upload/201607/22/1469193424_999824.png)

TC2.0下运行,编译链接没错,但是运行没有结果。求高人指点。

将内存0:0处的3000个数据当作375个struct stu型数据,将他们的c,os,masm,java数据项拷贝到数组a的对应数据项中,查找数组a总分在200到400之间的数据,用next连起来,并且打印。 #define NULL 0 char *n; char *m; int x,y; char temp; int i; struct stu{ unsigned char c; unsigned char os; unsigned char masm; unsigned char java; struct stu far * next; }; void *memcopy(void *destaddr,void *srcaddr,int len)//参考memcpy函数。 { char* dest=destaddr; char const* src=srcaddr; while(len-->0) { *dest++ = *src++; } return destaddr; } int compare(struct stu *a) { unsigned int sum; sum=a->c+a->os+a->masm+a->java; if( sum>200&&sum<400) return sum; else return 0; } int main() { struct stu a[375],*head,*p; memcopy(a,(void*)0x0000,3000); head=&a[0]; for(temp=0;temp<375;temp++) { a[temp].next=&a[temp+1]; } a[374].next=NULL; i=0; for(p=head;p!=NULL;p++) { if(compare(p)){ printf("a[%d]:%d\n\n",i,compare(p)); getch(); } p=p->next; i++; } }![图片说明](https://img-ask.csdn.net/upload/201507/20/1437386055_491601.png)

汇编语言的代码在dosboxs上出了点问题,有大神帮忙解决一下吗?

初学汇编,小白一枚,不知道错在哪里了,求大神带飞,代码是在源码中国下载的,在dosbox显示这样, ``` ;*********************************************************************************************************************** ;程序功能: ;完成小车的自动和手动沿轨道行驶的过程,并具有计时功能 ;*********************************************************************************************************************** ;运行说明: ;程序运行之后,即显示出轨道和小车; ;按键‘a’或‘m’选择自动还是手动(a为自动,m为手动),按‘s’键启动小车; ;手动时,按方向键控制小车方向,撞到轨道时,小车会停止并闪动; ;小车到达终点后会自动停车,之后按‘r’键可使小车回到起点,然后重新选择小车的运行得方式; ;小车行驶过程中,计时器计时,到达终点则停止计时; ;手动时,按‘t’暂停,‘c’键继续,此间计时不停止; ;小车回到起点位置后,按下‘s’键计时清零,并重新进行下一次的计时; ;小车处于未选定模式和手动运行时可按Esc键退出运行。 ;*********************************************************************************************************************** stack segment 'stack' db 256 dup(0) stack ends data segment count dw 0 sec dw 0 min dw 0 save_lc dw 2 dup(?) car db 0,7,0,0,0,0,0,0,7,0 ;车的图案,10行10列 db 7,0,7,0,0,0,0,7,0,7 db 0,7,9,9,9,9,9,9,7,0 db 0,0,9,0,0,0,0,9,0,0 db 0,0,9,0,0,0,0,9,0,0 db 0,0,9,0,0,0,0,9,0,0 db 0,0,9,0,0,0,0,9,0,0 db 0,7,9,9,9,9,9,9,7,0 db 7,0,7,0,0,0,0,7,0,7 db 0,7,0,0,0,0,0,0,7,0 x dw 180 ;起始位置 y dw 83 start_flag_1 db 0 ;启动标志1 start_flag_2 db 0 ;启动标志2 direc_flag db 0 ;方向标志 touch_flag db 0 ;触轨标志 arrive_flag db 0 ;到达标志 turn_x1 dw 138 ;拐弯点 turn_y1 dw 28 turn_x2 dw 203 turn_y2 dw 133 turn_x3 dw 135 es_save dw 0 ;用于保存图形缓冲区的首地址 mode db ? ;用于保存显示之前显示器的模式 x1 dw ? ;9型轨道的坐标 y1 dw ? x2 dw ? y2 dw ? x3 dw ? y3 dw ? x4 dw ? x_d dw 15 ;轨道的宽度 data ends code segment ;段设置 assume cs:code,ds:data start: mov ax,data mov ds,ax mov es,ax mov ax,0a000h ;图形缓冲区的首地址 mov es,ax mov es_save,ax ;把图形缓冲区的首地址保存在es_save mov ah,0fh int 10h ;获取显示器显示图形之前的显示模式 mov mode,al ;把显示模式保存在mode中 mov ah,35h mov al,1ch int 21h ;取中段号为1ch(定时中断)的中段向量(即中断程序的入口地址),并把它放在ES:BX中 mov save_lc,bx mov save_lc+2,es ;保存中断向量 push ds ;保存ds mov dx,seg clint ;定时中断服务程序的段地址 mov ds,dx mov dx,offset clint ;定时中断的中断服务程序的偏移地址 mov al,1ch mov ah,25h int 21h ;设置中断向量,入口:DS:DX=中断向量,al=中断类型号。 ;即把定时中断的中断服务程序的入口地址放在4*n(其中n为中断类型号)中 pop ds ;ds出栈 in al,21h ;允许键盘和定时器中断 and al,11111100b out 21h,al sti ;开中断 mov ax,13h int 10h ;设置显示器的模式为13h,320×200,256色 call guidao_9 ;画轨道 call picture ;显示小车 input: mov ah,0 int 16h ;等待按键输入 cmp ax,011bh ;Esc键退出 jz b4 cmp ax,326dh ;选m,则为手动 jne b1 call xiaoche_shou jmp b2 b1: cmp ax,1e61h ;选a,则为自动 jne input ;都没有选,则重新选择输入 call xiaoche_move b2: mov ah,0 ;等待按下r键 int 16h cmp ax,1372h ;r键的扫描码 jnz b2 ;不是r键,则等待至按下r mov start_flag_1,0 ;是r键,则将起始标志位清零 mov start_flag_2,0 mov arrive_flag,0 b3: call clearpicture ;擦除终点的小车 mov x,180 ;小车回到起始位置 mov y,83 call picture ;显示小车 jmp input b4: push ds mov dx,save_lc mov ax,save_lc+2 mov ds,ax mov al,1ch mov ah,25h int 21h ;重置之前的中断向量,调用lch pop ds mov ah,0 mov al,mode int 10h ;把显示器的模式设置为显示图形之前的模式 mov ax,4c00h ;返回dos int 21h ;*********************************************************************************************************************** ;显示9字型轨道 ;*********************************************************************************************************************** guidao_9 proc mov x1,190 mov y1,95 mov x2,135 mov y2,25 mov x3,215 mov y3,145 mov x4,135 call draw_9_line ;外轨道 mov x1,190 mov y1,80 ;轨道的入口 mov x2,150 mov y2,40 mov x3,200 mov y3,130 mov x4,135 ;轨道的出口 call draw_9_line ;内轨道 ret guidao_9 endp ;******************************画9字********************************** draw_9_line proc mov cx,x1 mov dx,y1 mov di,y2 mov si,x2 call hline call sline mov di,y3 mov si,x3 call hline call sline mov si,x4 call hline draw_9_line endp ;*********************画竖线********************** sline proc mov al,03h ;设置直线的颜色为青 mov bh,0 ;0页 mov ah,0ch cmp dx,di jg a1line aline: int 10h ;写图形象素,AL=01h象素值,BH=0页码,(CX、DX)=(0,0)图形坐标列(X)、行(Y) inc dx cmp dx,di ;判断是否到di行 jng aline ;没到,则画线 dec dx ;使下一个点与这一个点重合 jmp e3 a1line: int 10h dec dx cmp dx,di jnl a1line inc dx e3: ret ;到了,则退出 sline endp ;*********************画横线********************** hline proc mov al,03h ;设置直线的颜色为青 mov bh,0 ;0页 mov ah,0ch cmp cx,si jg b1line bline: int 10h ;写图形象素,AL=01h象素值,BH=0页码,(CX、DX)=(0,0)图形坐标列(X)、行(Y) inc cx ;画第一点,并让横坐标加一 cmp cx,si ;判断是否到si列 jng bline ;没到,则画线 dec cx ;使下一条线的起点与这一个点重合 jmp e2 b1line: int 10h ;写图形象素,AL=01h象素值,BH=0页码,(CX、DX)=(0,0)图形坐标列(X)、行(Y) dec cx cmp cx,si jnl b1line ;没到,则画线 inc cx ;使下一条线的起点与这一个点重合 e2: ret ;到了,则退出 hline endp ;*********************************************************************************************************************** ;显示小车(通过向图形显示缓冲区写点) ;*********************************************************************************************************************** picture proc near mov ax,es_save mov es,ax mov dx,y mov bx,0 again: cmp dx,0 je over add bx,320 dec dx jmp again ;找到小车第一个点所在行 over: mov dx,10 lea si,car next1: mov cx,10 mov di,x ;找到小车第一个点 next: mov al,[si] mov es:[bx+di],al ;往空位填写数据 inc si ;指向下一个待填入的数据 inc di ;指向下一个等待填写的空位 loop next add bx,320 ;转到下一行 dec dx jne next1 ret picture endp ;*********************************************************************************************************************** ;计时器(中断号为1ch的中断为计时器中断,每55ms中断一次,每秒发生18.2次中断) ;*********************************************************************************************************************** clint proc far push ax ;保护寄存器 push bx push cx push dx push si push di push bp push sp push ds push es mov bx,data mov ds,bx ;设置数据段 assume ds:data cmp arrive_flag,1 ;判断小车是否到达终点 jne e6 ;没到,则跳至e7 call disptime ;到达,则显示时间 jmp return ;返回 e6: lea bx,count inc word ptr[bx] ;每产生一次定时中断,count加1 cmp word ptr[bx],18 ;判断是否到1秒 jne e7 ;没到,则跳至e6 call inct ;调整时间 e7: mov al,start_flag_1 and al,start_flag_2 jnz e8 mov al,start_flag_1 or al,start_flag_2 jz return jmp e9 e8: mov count,0 mov sec,0 mov min,0 mov start_flag_2,0 e9: call disptime ;显示小车 return: pop es pop ds pop sp pop bp pop di pop si pop dx pop cx pop bx pop ax iret clint endp ;******************判断是否进位******************* inct proc near mov word ptr[bx],0 add bx,2 inc word ptr[bx] cmp word ptr[bx],60 jne exit call inct exit: ret inct endp ;*****************************显示时间******************************** disptime proc near mov ax,min call bindec mov dl,':' mov ah,02h int 21h mov ax,sec call bindec mov dl,':' mov ah,02h int 21h mov bx,count mov al,55d mul bl call bindec mov dl,0dh ;输出回车,让光标回到起点 mov ah,02h int 21h ret disptime endp ;************把一个三位十进制数显示出来*********** bindec proc near mov cx,100d call decdiv mov cx,10d call decdiv mov cx,1 call decdiv ret bindec endp ;********************显示高位********************* decdiv proc near mov dx,0 div cx push dx mov dl,al add dl,30h mov ah,02h int 21h ;显示一位 pop ax ret decdiv endp ;************************************************************************************************************************ ;擦除 ;************************************************************************************************************************ clearpicture proc near mov dx,y mov bx,0 again2: cmp dx,0 je over2 add bx,320 dec dx jmp again2 over2: mov dx,10 next12: mov cx,10 mov di,x next2: mov al,0 ;把该点置为0,即用黑色擦除该点 mov es:[bx+di],al inc di loop next2 add bx,320 dec dx jne next12 ret clearpicture endp ;*********************************************************************************************************************** ;延时程序 ;*********************************************************************************************************************** delay proc near push bx push cx mov bx,1234 back: mov cx,66 push ax wait1: in al,61h and al,10h cmp al,ah je wait1 mov ah,al loop wait1 pop ax dec bx jne back pop cx pop bx ret delay endp ;*********************************************************************************************************************** ;小车自动运行 ;*********************************************************************************************************************** xiaoche_move proc call picture ;转移至picture程序段 ag: mov ah,7 ;中断 int 21h cmp al,'s' ;设置开始键s jne ag ;判断是否为s,不是则转至ag中断 mov start_flag_1,1 mov start_flag_2,1 start1: call clearpicture dec x call picture call delay mov si,x cmp si,turn_x1 ;遇到第一个拐弯 jg start1 start2: call clearpicture dec y call picture call delay mov si,y cmp si,turn_y1 ;遇到第二个拐弯 jg start2 start3: call clearpicture inc x call picture call delay mov si,x cmp si,turn_x2 ;遇到第三个拐弯 jl start3 start4: call clearpicture inc y call picture call delay mov si,y cmp si,turn_y2 ;遇到第四个拐弯 jl start4 start5: call clearpicture dec x call picture call delay mov si,x cmp si,turn_x3 ;遇到第五个拐弯,即终点 jg start5 mov arrive_flag,1 ret xiaoche_move endp ;*********************************************************************************************************************** ;小车手动运行 ;*********************************************************************************************************************** xiaoche_shou proc j0: call clearpicture ;擦除小车 call saomiao ;键盘扫描 cmp start_flag_1,1 ;判断小车是否启动 jne a8 ;没有,则呆在原地不动 ;判断小车运动的方向 cmp direc_flag,1 ;上 jne a1 dec y a1: cmp direc_flag,2 ;下 jne a2 inc y a2: cmp direc_flag,3 ;左 jne a3 dec x a3: cmp direc_flag,4 ;右 jne a4 inc x a4: call ya_line_do ;检测是否碰到轨道 cmp touch_flag,1 jne a8 ;没有碰到轨道,则继续前进 call guidao_9 ;碰到则重新显示轨道 mov touch_flag,0 ;将触轨标志清零 call back_step ;小车后退一步,回到轨道 a8: call picture call delay cmp arrive_flag,1 ;判断小车是否到达终点,到了则退出 jne j0 a9: ret xiaoche_shou endp ;*********************************************************************************************************************** ;键盘扫描程序 ;*********************************************************************************************************************** saomiao proc near mov ah,01h ;从键盘读一个字符,读到的结果为键的扫描码,存放在AH中 int 16h jz f ;如果无键按下,则退出 mov ah,00h ;若有键按下则中断当前 int 16h cmp ax,1f73h ;s的扫描码 jne h mov start_flag_1,1 mov start_flag_2,1 mov direc_flag,0 mov arrive_flag,0 h: cmp ax,1474h ;t的扫描码 jne j mov start_flag_1,0 mov start_flag_2,1 k: call picture mov ah,0 int 16h cmp ax, 2e63h ;c的扫描码 jne k mov start_flag_1,1 mov start_flag_2,0 call clearpicture j: cmp ax,4800h ;上键的扫描码 jne a mov direc_flag,1 a: cmp ax,5000h ;下键的扫描码 jne b mov direc_flag,2 b: cmp ax,4b00h ;左键的扫描码 jne g mov direc_flag,3 g: cmp ax,4d00h ;右键的扫描码 jne f mov direc_flag,4 jmp f e1: mov al,mode ;一旦有按键输入,则把显示器的模式设置为画直线之前的模式 mov ah,0 int 10h mov ax,4c00h int 21h f: ret saomiao endp ;*********************************************************************************************************************** ;小车触轨判断及处理 ;*********************************************************************************************************************** ya_line_do proc mov ax,y2 mov bx,y1 mov cx,x2 call ya_y_line sub ax,x_d add bx,x_d sub cx,x_d call ya_y_line mov ax,y2 mov bx,y3 mov cx,x3 call ya_y_line sub ax,x_d add bx,x_d add cx,x_d call ya_y_line mov ax,x2 mov bx,x1 mov cx,y1 call ya_x_line sub ax,x_d add cx,x_d call ya_x_line mov ax,x2 mov bx,x3 mov cx,y2 call ya_x_line sub ax,x_d add bx,x_d sub cx,x_d call ya_x_line mov ax,x4 mov bx,x3 mov cx,y3 call ya_x_line add bx,x_d add cx,x_d call ya_x_line cmp touch_flag,1 je e4 mov ax,y3 ;判断是否到终点 mov bx,ax add bx,x_d mov cx,x4 call ya_y_line mov al,touch_flag mov arrive_flag,al e4: ret ya_line_do endp ;*****************判断是否触到y线***************** ya_y_line proc ;ax为y1(起点),bx为y2(终点),cx为x1 cmp x,cx je n3 mov dx,cx ;注意cx不能变化 sub dx,9 cmp x,dx jnz n1 n3: mov dx,ax sub dx,9 cmp y,dx jl n1 cmp y,bx jg n1 mov touch_flag,1 n1: ret ya_y_line endp ;*****************判断是否触到x线***************** ya_x_line proc ;ax为x1(起点),bx为x2(终点),cx为y1 cmp y,cx je n5 mov dx,cx ;注意cx不能变化 sub dx,9 cmp y,dx jnz n2 n5: mov dx,ax sub dx,9 cmp x,dx jl n2 cmp x,bx jg n2 mov touch_flag,1 n2: ret ya_x_line endp ;************************小车触轨则后退一步*************************** back_step proc cmp direc_flag,1 ;如果碰到轨道,则后退一步 jne a5 inc y a5: cmp direc_flag,2 jne a6 dec y a6: cmp direc_flag,3 jne a7 inc x a7: cmp direc_flag,4 jne a8 dec x ret back_step endp ;*********************************************************************************************************************** ;*********************************************************************************************************************** code ends end start ```

各位大神,麻烦帮帮忙!

登陆oracle11g 报错 ORA-01034 ORA-27101 进程 ID: 0 会话 ID: 0 序列号: 0,是怎么个回事? ![图片说明](https://img-ask.csdn.net/upload/201604/11/1460372977_321844.png)

输入一个字符串,将小写字母转换成大写字母,然后输出到磁盘文件“test”中保存,输入字符以“!”结束

void Fun1(char *str, const char *path) { FILE *fw = fopen(path, "w"); assert(fw != NULL); int i; for (i=0; str[i]!='!'; i++) { if (str[i]>='a' && str[i]<='z') { str[i] -= 'a' - 'A'; } } str[i] = '\0'; fwrite(str, sizeof(char), strlen(str)-1, fw); fclose(fw); } 请各位高人指教一下,我不知道我的这个程序哪里有问题?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

数据库——玩转SQL语句(以MySQL为例)

一、前言 照着大学的SQL server来学

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

01、Java入门(Getting Started);02、集成开发环境(IDE);03、项目结构(Eclipse JavaProject);04、类和对象(Classes and Objects);05:词法结构(Lexical Structure);06:数据类型和变量(Data Type and Variables);07:运算符(Operators);08:控制流程语句(Control Flow Statements);

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

立即提问
相关内容推荐