摘要:
1.内存单元间接表示: [bx] mov dl, [0]; dl ← ((ds)×16 + 0) mov bx, 0 mov dl, [bx]; dl ← ((ds)×16 + (bx)) 可以使用bx间接访问内存单元。默认,段地址在ds。 2.loop指令 (1) 语法格式 loop 标号 (2) 阅读全文
摘要:
实验内容: 1. 补全程序 t1.asm,完成在屏幕上输出内存单元中的十进制两位数 编译,连接和运行: 总结和体会: 这个小实验因为add 少打了一个","导致编译总是不通过 补全指令,使得ds <-- data段地址,不能直接移动,要通过中间量ax才可以 另外如果要将某内存单元的数据移入一个地址中 阅读全文
摘要:
编写、调试具有多个段的程序 (1)将下面的程序编译连接,用debug加载,跟踪然后回答问题 assume cs:code,ds:data,ss:stack data segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h data end 阅读全文
摘要:
1. 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据0403H。 编辑: 编译 链接 执行: 发现当向ax寄存器中写入0403h内存时出现的是红心,下面修改为0411h 出现的是AAAAAAAAAAAAAAAA 2、综合使用 阅读全文
摘要:
在前三章我们都是通过debug一步一步的写命令,这一章我们开始写一个代码文件,对代码文件进行编译,连接和运行。 1.在程序中有两种指令:汇编指令,伪指令。汇编指令是有对应的机器码,最终会被CPU执行,伪指令没有对应的机器指令,不会被CPU执行 2.常见的伪指令:XXX segment XXXends 阅读全文
摘要:
1. 练习1 第1步,编写汇编源程序t1.asm, 源程序代码如图1-1所示。 以下分别为编辑,编译,连接,运行结果 (1) 运行程序,观察程序输出结果是什么? 36 (2) 将 line4和line9种寄存器dl 的值分别修改为 0~9 中任何一个数字,重新汇编→ 连接→运行,观察结果的变化。 改 阅读全文
摘要:
1.实验前的准备:在使用a命令调试之前,使用e命令将内存单元e 0021:0 0021:7 修改为30H,31H,32H,33H,34H,34H,35H,36H,37H 把第74页的mov ax,ffff ——>mov ax,0021 mov ax,0021 mov ds,ax mov ax,220 阅读全文
摘要:
3.1 内存中字的存储:CPU中用16位寄存器存储一个字,高八位放高位字节,第八位放低位字节, 我们的存储有两种方式,一种是大端法,一种是小端法 3.2 DS和[address] CPU要读写内存单元的时候,必须先给出这个内存单元的地址,内存单元的地址由段地址和偏移地址组成 DS寄存器是用来存放数据 阅读全文
摘要:
(1):使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内存的变化。 机器码 汇编指令 b8 20 4e mov ax,4E20H 05 16 14 add ax,1416H bb 00 20 mov bx,2000H 01 d8 add ax,bx 89 阅读全文
摘要:
第二章 寄存器 上节说到CPU通过系统总线与内部各个器件的联系,这一节开始说说其中一个重要的器件 寄存器,程序员在编程时,可以通过改写寄存器的内容达到对CPU的控制;在8086CPU的 16位寄存器中,AX,BX,CX,DX都是通用寄存器,可以存放一般性的数据。为了兼容上代的CPU这些寄存器可以分成 阅读全文