Fork me on Gitee

随笔分类 -  Assembly

Assembly
摘要:实验1定时与中断接口程序设计一实验目的1.了解定时器/计数器 8253、并行 I/O接口 8255A在 PC机中的电路连接方法;2.学习使用 TURBO C++对 8253、8255进行编程操作;3.熟悉拦截 PC机中断向量的 TC++编程方法。二实验内容1.8253、8255在 PC/XT机中的电路连接介绍PC机启动后,系统设置的初始状态为:芯片有关工作方式初值运行情况通道 0#:方式 3(方波... 阅读全文
posted @ 2020-04-22 23:46 ---dgw博客 阅读(1124) 评论(2) 推荐(0) 编辑
摘要:lea 是机器指令,offset 是伪指令。 LEA BX, BUFFER ;在实际执行时才会将变量buffer的地址放入bx MOV BX, OFFSET BUFFER ;在编译时就已经计算出buffer的地址为4300(假设),然后将上句替换为: mov bx,4300 lea可以进行比较复杂的 阅读全文
posted @ 2019-12-05 23:15 ---dgw博客 阅读(1053) 评论(0) 推荐(0) 编辑
摘要:混合编程方法: 模块链接法 汇编指令嵌入法 1: 模块链接法则 模块链接法是指分别用汇编语言和C语言实现独立的模块(或子程序),再用链接程序把各模块生成的obj文件连接成一个可执行程序。 1:C语言调用汇编语言子程序:即由汇编语言实现子程序,C语言实现主程序。 2: 汇编语言调用C语言子程序:即由C 阅读全文
posted @ 2019-11-29 15:35 ---dgw博客 阅读(4102) 评论(0) 推荐(0) 编辑
摘要:汇编语言对数组寻址几种方式: # 方式一 mov ax,arr[si]; 直接方式 # 方式二 mov bx,offset arr; mov ax, arr[bx]; 完成上面一样的方式 程序设计题(30分) 1. 编写一个程序段,将AX寄存器低5位与BX寄存器低11位拼接为一个字,结果送至AX寄存 阅读全文
posted @ 2019-11-23 23:41 ---dgw博客 阅读(337) 评论(0) 推荐(0) 编辑
摘要:1: Near 近端使用 C语言实现: #include <stdio.h>#include <stdlib.h> void print(){ printf("proc"); } int main(int argc, char *argv[]) { print(); return 0; } 汇编实现 阅读全文
posted @ 2019-11-23 11:01 ---dgw博客 阅读(1556) 评论(1) 推荐(0) 编辑
摘要:1: 引子 基本定义格式: 1: far 不再相同代码段 调用: call far ptr max 2: near 在相同代码段 调用: call max name proc far|naer name endp 操作数因子: 1: 取数 通用操作: push bp mov bp,sp 1: 取第一 阅读全文
posted @ 2019-11-22 21:02 ---dgw博客 阅读(1838) 评论(0) 推荐(0) 编辑
摘要:1. 存储模型伪指令 MASM 5.0和MASM 6.0支持的存储模型: 存储模型 功 能 适用操作系统 Tiny (微型) 所有数据和代码都放在一个段内,其访问都为NEAR型,整个程序≤64K,并会产生.COM文件。 MS-DOS Small (小型) 所有代码在一个64KB的段内,所有数据在另一 阅读全文
posted @ 2019-11-15 20:16 ---dgw博客 阅读(827) 评论(0) 推荐(0) 编辑
摘要:1:需要的文件 需要的安装包:这些百度都能下载找到 1)、DOSBox 链接: 2) 、MASM5.0 链接: 3)、DEBUG 链接: 下面给出我们打包的环境 直接可用: (汇编我并不需要关注安装这些,真的不需要) 汇编环境: https://files-cdn.cnblogs.com/files 阅读全文
posted @ 2019-11-15 13:37 ---dgw博客 阅读(35846) 评论(1) 推荐(8) 编辑
摘要:(2)DEBUG 命令用法 进入 DEBUG ,用 D 命令查看数据段中 0100H——0200H 单元的内容 用 U 命令查看代码段中 0100H 开始的程序 用 R 命令查看并修改 IP 寄存器的值为 0 用 E 命令修改数据段 5 号、6 号单元的内容为 12 、34 用 A 命令实现 Z = 阅读全文
posted @ 2019-11-14 16:41 ---dgw博客 阅读(1333) 评论(0) 推荐(0) 编辑
摘要:DEBUG的基本命令的使用 DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 DEBUG的命令都是一个字母,后跟一个或多个参数:字母 [参数] 命令的使用中注意: ① 字母不分大小写; ② 只使用16进制数,没有后缀字母; ③ 分隔符 阅读全文
posted @ 2019-11-14 16:00 ---dgw博客 阅读(9713) 评论(2) 推荐(4) 编辑
摘要:1: 数据的表示 微型计算机的字长与微处理器的寄存器位数有关。 以 Intel 80X86 系列微处理器为例,CPU 是 8086/8088、80286 的字长是 16 位(二进制位 bit),那么它们的寄存器的位数一定是 16 位的; 32 位字长的微机 CPU 是 80386/80486 或者 阅读全文
posted @ 2019-11-14 15:58 ---dgw博客 阅读(1317) 评论(0) 推荐(0) 编辑
摘要:1: 汇编语言实现斐波那契数列 DATAS SEGMENT arr DW 101H DUP(0001,0001); 初始化 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV CX,1 阅读全文
posted @ 2019-11-09 23:23 ---dgw博客 阅读(468) 评论(0) 推荐(0) 编辑
摘要:1:内存分布图 注意: 必须弄懂这个图,这能良好处理指令序列 常用归零代码: 1:MOV AX,0 2:SUB AX,AX 3:XOR AX,AX 4:AND AX,00H 1假设寄存器AX保存的是一个有符号数,编写一个程序实现加下功: DATAS SEGMENT X DW 02H; DATAS E 阅读全文
posted @ 2019-11-08 17:38 ---dgw博客 阅读(355) 评论(0) 推荐(0) 编辑
摘要:1: 字符输出 LDA AX,BUffer: 将buffer地址的连带偏移地址加入到AX寄存器中 , 8086 8088为16进制的寄存器,20位物理地址 MOV AX,BUffer; 同理,但是将buffer的16位地址装入AX寄存器中 DATAS SEGMENT STRS DB 'Hello W 阅读全文
posted @ 2019-11-03 14:49 ---dgw博客 阅读(742) 评论(0) 推荐(0) 编辑
摘要:1: 基本结构 2:基本指令 一、数据传送指令 1、传送指令:MOV (move) (1) CPU内部寄存器之间的数据传送,如:mov ah,al (2) 立即数送至通用寄存器(非段寄存器)或存储单元,如:mov al,3 mov [bx],1234h (3) 寄存器与存储器间的数据传送,如:mov 阅读全文
posted @ 2019-11-02 22:46 ---dgw博客 阅读(5765) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示