目录

1.首先是编译问题

2.显示缓存区每一行是80个字符也就是160个字节

3.当数据想要写到第二行时  这时si已经向后走了16个位移了所以不能直接+160

应该+160-32

4.视频中教程用一个寄存器:高位存属性低位存数据(BX)

5.视频中是这样写的


下面这段代码是看完视频后自己有写了一遍的结果

写的过程中遇到的问题有:

1.首先是编译问题

前边的知识

并不是所有的寄存器都可以写到[...]里进行寻址的

可以写的有:

bx,bp,di,si

刚开始用寄存器用的不对会有提示但是看不太懂去浏览器搜了又去翻了之前的课本才找到

在课本的第八章一开始就有说明(161)

2.显示缓存区每一行是80个字符也就是160个字节

第一行是0~159

但是159放的是第158个字节的属性

第一行最后一个地址是158

根据以上推理按说是没有问题的

但是当我在dosbox中验证时却发现不对

如图用e指令修改b800:158处的地址为65(A所对应的ascll码)

但是却在第三行蹦出来一个e

这是为什么呢

后来发现就连我改内容前边的偏移地址都不对

每一行有8个字节   偏移地址应该+8才对呀但是为什么一会加8一会加2呢

后来想到了16进制

在dosbox中数据默认都是16进制的而我输入的158是十进制所以不对

包括65  十六进制的65对应的是e

还有偏移地址也是这样的

当我将158转成十六进制时9e

修改数据为41时右上角出现了A

根据视频中提示中间写的内容的偏移地址是在

注意在代码中默认是10进制

0b800h:160*10+30*2

3.当数据想要写到第二行时  这时si已经向后走了16个位移了所以不能直接+160

应该+160-32

因为16个字节还要配16个属性应该是32

4.视频中教程用一个寄存器:高位存属性低位存数据(BX)

数据都是在偶数中的属性都是基数

assume cs:code,ds:data,ss:stack
data segment;0123456789abcdefdb 'welcome to masm!'       ;ds:[si]db 10001010b;绿色闪烁高亮   ;ds:[di]db 10101100b;绿底红色db 11111001b
data endsstack segment stackdb  128 dup(0)
stack endscode segmentstart:  mov ax,stackmov ss,axmov sp,128mov ax,datamov ds,ax;用bx做中间容器存储属性和内容mov bx,0mov di,16mov si,0;用es:bp表示要写入的地址mov ax,0b800hmov  es,axmov bp,160*10+30*2mov cx,3
duohang:          push cxmov cx,16mov bh,ds:[di]hang:          mov bl,ds:[si];写到这里(一行)mov  es:[bp],bxadd bp,2inc siloop hangmov si,0pop cxadd bp,160-32inc diloop duohangmov ax,4C00hint 21hcode ends end start

5.视频中是这样写的

他是先将要改动的数据push保存起来进行保护

然后第二行循环的时候再拿出来

这种显然更好但是我没想出来

assume cs:code,ds:data,ss:stack
data segment;0123456789abcdefdb 'welcome to masm!'             ;  ds:[si]db  00000010b                    ;0000 0000  ds:[bx]db  00100100b                    ; rgb  rgbdb  01110001bdata endsstack segment stackdb  128 dup(0)
stack endscode segmentstart:  mov ax,stackmov ss,axmov sp,128mov bx,datamov ds,bxmov bx,0b800hmov es,bxmov si,0mov di,160*10+30*2mov bx,16mov dx,0mov cx,3
showtRow:       push cxpush sipush dimov cx,16mov dh,ds:[bx]showRow:       mov dl,ds:[si]mov es:[di],dxadd di,2inc siloop showRowpop dipop sipop cxadd di,160inc bxloop showtRowmov ax,4C00hint 21hcode ends end start

王爽老师汇编语言第四版:实验九 根据材料编程相关推荐

  1. 王爽老师汇编语言第四版第十章CALL和RET指令——小白笔记

    目录 10.1 ret和retf (1)  ret: (2)retf: 10.2 call指令 10.3依据位移进行转移的CALL指令 10.4 转移的目的地址在指令中的CALL指令 10.5转移地址 ...

  2. 实验九 根据材料编程

    南京信息工程大学实验报告 实验(实习)名称    根据材料编程    实验(实习)日期    2018年12月11日   得分        指导老师 耿学华 系 计软院 专业 计科 年级 2017级 ...

  3. 实验九 根据材料编程(改变字体颜色)

    编程:在屏幕中间分别显示 绿色.绿底红色.白底蓝色的字符串'welcome to masm!' 一个字符在屏幕上占用两个字节 低地址存放ASCII码,高地址存放字符的属性 偶数地址都是存放字符的ASC ...

  4. 王爽老师汇编语言实验7

    目录 1.首先观察数据 定义了三个类型的数据分别是: 2.验证数据 3.将数据和寄存器绑定 前边几行代码是用来将寄存器和段地址关联起来的 4.下面我们来一个一个解决问题 (1)先把年份放到对应位置 法 ...

  5. 王爽《汇编语言第三版》实验10-1代码实现

    ;编写一个通用的子程序实现这个显示字符串的功能,提供灵活的调用接口,使调用者 ;可以决定显示的位置,内容,颜色 assume cs:code,ss:stack,ds:data data segment ...

  6. 王爽老师汇编第三版课程设计 一

      该课程设计是在屏幕输出公司21年的详细信息,包括年份.当年总收入.当年人数.当年的人均收入(这个需要运用除法运算).   显示总收入需要解决除法溢出的问题,改进除法运算,见课本王老师的附录讲解   ...

  7. 王爽老师汇编语言监测点1.1

    自学汇编交流学习,自己理解的不一定完全正确 1.1个cpu的寻址能力为8kb,那么它的地址总线宽度为(13) 总线宽度 计算                                      ...

  8. C语言中main函数的研究,以及对代码断点调试的研究(王爽老师 汇编语言)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 我们知道作为一个语言本身是不会有诸如从main函数开始运行这样的条件(深层次的说 底层汇编代码不会指定从mian函数开始的这样的条件,程序开始的位 ...

  9. 自学王爽老师汇编语言 检测点6.1

    自学汇编,讨论学习,不对之处请指出共同学习,不喜勿喷 1,下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序: assume cs:codecode segmentdw 0 ...

最新文章

  1. 中石油大学计算机二在线作业答案,中国石油大学计算机应用基础第二阶段在线作业答案2018年.doc...
  2. main 函数的标准原型
  3. Python os.makedirs详细介绍
  4. OSChina_IOS版客户端笔记(四)_程序数据、缓存的管理
  5. 【NOIP2004】【Luogu1090】合并果子
  6. 高性能网络编程(二):上一个10年,著名的C10K并发连接问题
  7. daemontools安装和使用
  8. textpattern 在 nginx 上的 rewrite 规则
  9. 计算机鼠标左键不起作用,电脑鼠标左键不能用怎么办
  10. 近日,软件项目管理高峰论坛成功召开,项目管理平台发布正式亮相……
  11. System.Activator类
  12. clustream java_数据流聚类算法
  13. Android Studio文本编辑框EditText
  14. 微信扫码登录,微信公众号生成二维码,关注登录nodejs+vue
  15. c语言程序压缩解压缩文件夹,【转】使用VC++压缩解压缩文件夹
  16. 【微服务】165:导入数据到索引库
  17. 什么是UUID 以及UUID的版本
  18. C语言多线程之“哲学家就餐”问题
  19. springcloud:访问/bus/refresh地址后出现错误,,client端出现以下错误
  20. 电视剧植入式广告的植入方式有哪些

热门文章

  1. 为什么要自己做一把蓝牙机械键盘
  2. 极米h3s投影仪参数 极米 H3S 投影仪评测 怎么样
  3. 乙肝大三阳恶化有哪些症状
  4. 什么是薪酬管理系统,薪酬管理有哪些功能?
  5. matlab 求矩阵奇异值,matlab怎么求矩阵的奇异值和奇异值分解 来看看吧
  6. 合伙人股权的进入和退出机制方案
  7. HTML5标签属性(含新增标签)
  8. Oracle中In函数的使用
  9. Monte Carlo蒙特卡洛算法经验与UCB算法与UCT算法
  10. Centos7 文件查找配置项(FZF命令)