摘要: 实验8是要求阅读一个很奇葩的代码:assume cs:codecode segment mov ax, 4c00h int 21h start: mov ax, 0s: nop nop ;下面这段代码主要是把s2的内容复制到s处 mov di, offset s mov si, offset s2 mov ax, cs:[si] mov cs:[di], ax s0: jmp short s s1: mov ax, 0 int 21h mov ax, 0 s2: jmp short s1 nopcode endsend start先看看开始时代码在... 阅读全文
posted @ 2013-04-25 23:44 ay27 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 因为实验7中的数据太多,我就对其缩减了一些。因为其中用到很多的寄存器,但是每个寄存器都有限制规则,所以要精心分配寄存器。最先分配的是两个段寄存器,data用ds存放, table用es存放。然后要确定循环使用的寄存器cx;然后要精心分配指向table和data地址的寄存器,由于能够指向地址的寄存器只有bx, si di, bp,选其中三个进行地址的指定,我的选择是: 一个指向table地址的寄存器bp,一个指向年份和收入的寄存器di,一个指向雇员的寄存器si;最后确定使用div命令所需要的ax和dx。分配好寄存器后就是进行编码工作了。编码过程中发现,原来不能使用这样的命令:mov 地址, 地址 阅读全文
posted @ 2013-04-25 21:57 ay27 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 最近学习了一下8086的16位汇编语言,学习了一种比较奇葩的进行字母大小写转换的方法。不必用CMP语句进行判断,一步到位。当然前提要求是输入的数据必须是字母哈。把字母的ASCII码用二进制查看:大写 16进制 二进制 小写 16进制 二进制A 41 0100 0001 a 61 0110 0001B 420100 0010 b 62 0110 0010C 43 0100 0011 c 63 0110 0011D 44 0100 0100...Z5A 0101 1010 z 7A 0111 1010明显的,小写的ASCII值 = 大写的ASCII值 + 20H而且,小写... 阅读全文
posted @ 2013-04-25 21:45 ay27 阅读(1199) 评论(0) 推荐(0) 编辑