王爽《汇编语言》实验9
来源:互联网 发布:开机还原软件 编辑:程序博客网 时间:2024/05/06 17:11
很奇怪仍然有些小问题,在屏幕上只显示了一行字符,没有按我想的显示三行不同颜色的字符。。。
本来想问别人的,想想自己的事情自己办,又单步跟踪了下,终于发现,另一个循环没有把si置0
;在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'My name is kevin!'assume cs:codedata segmentdb 'My name is kevin!',0 ;以0结尾,方便遍历这个字符串;db 'My',0 ;查找bug时为了减少遍历,把这个字符串长度减少了db 01110001b,10000010b,00100100bdata endsstack segmentdb 10h dup (0)stack endscode segmentstart:mov ax,datamov ds,axmov bx,0;设置栈mov ax,stackmov ss,axmov sp,10h;设置显示的行号mov dh,10mov di,0mov cx,3;有三种颜色需要显示s0:push cxmov si,0s: mov ch,0mov cl,[bx+si];当找到0表示字符串结束了jcxz okpush bx;因为把bx作为了临时的它用寄存器,先入栈;定义一个函数类似的。让字符及属性在ax中.(al:字符 ah:属性),让dx存放位置(dh存放行号,dl存放列数)mov ax,cx;mov ah,0CAh;这里代表颜色mov ah,[bx].12h[di]push ax;将参数1入栈mov dl,30add dx,si;虽然使用dx,其实只想数据加到dl中,应该是如所愿的吧push dx;将参数2入栈;计算目标存储位置(偏移为:(行号-1)*A0+(列号-1)*2)pop dxmov al,dhdec almov ah,0A0hmul ahmov bx,ax;将结果先存到bx中mov al,dlmov ah,0dec alshl al,1add bx,axmov ax,0B800hmov es,ax;pop dx;这个好像没用pop ax;这个是要复制过去的字mov word ptr es:[bx], ax;将字复制过去pop bxinc sijmp short sok:pop cxinc diinc dhloop s0 mov ax,04c00hint 21hcode endsend start
结果:
小备注:其实是有三行展示的,中间那行是闪烁的,在截图时它闪没了,所以看起来是两行。。。嘿嘿。
- 王爽 汇编语言 实验9
- 王爽《汇编语言》实验9
- 王爽《汇编语言》实验9
- 王爽-汇编语言(第一版) 实验9
- 汇编语言--王爽--实验9 子程序
- 王爽《汇编语言》实验9详解
- 【王爽-汇编语言】第九章实验9
- 王爽《汇编语言》实验9:显示字符 解答
- 王爽《汇编语言》实验9:根据材料编程
- 王爽 汇编语言 实验9:显示解答
- 王爽《汇编语言》第九章实验9
- 王爽 《汇编语言》第三版 实验9
- 王爽《汇编语言》实验13
- 王爽《汇编语言》实验16
- 王爽 汇编语言 实验7
- 王爽 《汇编语言》 实验 15
- 王爽 汇编语言 实验七
- 王爽 汇编语言 实验九
- 从文件中读取内容,并去掉换行符'\n'的一种简单方法
- Android视频播放器缓冲时流量显示的实现方式
- Weblogic WLST weblogic Scripting Tool
- 循环语句中我自己记录的重要部分
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4 含iOS版源代码
- 王爽《汇编语言》实验9
- cocos2d-x源码分析::主流程(mainloop)分析
- dx相关代码
- 杭电NEU 动规专题 A
- EOJ 1019 着弹点
- 如何在win32控制台应用程序中使用C++类库
- MFC 获取对话框大小
- QTP错误处理机制
- sql plus修改用户名和密码-orcale 11g修改用户名和口令的方法