汇编语言
Kunaly
菜鸟程序员,苟且偷生;弱鸡研究生,苟延残喘。
展开
-
X86和X87汇编指令大全(有注释)
X86和X87汇编指令大全(有注释) ---------- 一、数据传输指令 ---------------------------------------------------- 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX ...转载 2019-07-24 10:41:14 · 353 阅读 · 0 评论 -
汇编语言程序设计——循环结构例1
汇编语言程序设计——循环结构例1设计目标在 5 行 16 列上用写显存方法显示多彩字符串。用循环指令实现。设计思路(1)用 DH 存放行号,DL 存放列号;(2)BL 存放字符属性,第 1 个字符的属性为 4,红色;其他字符按属性 +1 改变;(3)字符的位置计算公式:行号 × 160 + 列号 × 2;(4)用循环指令 LOOP 实现将多彩字符串循环写入显存 。...原创 2019-08-01 16:51:39 · 1305 阅读 · 0 评论 -
汇编语言程序设计——循环结构例2
汇编语言程序设计——循环结构例2设计目标将数据段中的字符串 STRG1 传送到附加段的 STRG2 中。设计思路(1) 分别定义数据段 DATA 和附加段 EXTRA;(2) 用 SI 保存源串 STRG1 的偏移地址,DI 保存目的串 STRG2 的偏移地址,传送个数由 CX 指出;(3) 用CLD指令将方向标志 DF 清 0,以便从低地址单元开始取数;存储单元地...原创 2019-08-01 17:07:09 · 796 阅读 · 0 评论 -
汇编语言程序设计——循环结构例3
汇编语言程序设计——循环结构例3设计目标字符串比较,比较两个字串 BUNCH1 和 BUNCH2 是否相同,相同打印 Y,不相同打印 N。;6-3.asm 比较两个字串BUNCH1和BUNCH2data segment bunch1 db 'student' bunch2 db 'studEnt'data endscode segment assume c...原创 2019-08-01 18:15:46 · 549 阅读 · 0 评论 -
汇编语言程序设计——循环结构例4
汇编语言程序设计——循环结构例4设计目标1在字数组 VALUE 中查找 -1,找到后将其位置保存到 ADDR 单元。;6-4.asm 串扫描。在字数组VALUE中查找-1,找到后将其位置保存到ADDR单元。data segment value dw 1,2,0,3,5,-1,10 addr dw ?data endscode segment assume ...原创 2019-08-01 18:27:53 · 826 阅读 · 0 评论 -
汇编语言程序设计——循环结构例5
汇编语言程序设计——循环结构例5设计目标汇编语言实现冒泡排序,将字数组 PART 按升序排序。设计思路(1) 用两条 LOOP 指令实现双重循环时,对 CX 寄存器有冲突。采用PUSH CX指令将外循环的 CX 值入栈保存,内循环的 LOOP 结束后,再将外循环的 CX 恢复;(2)用寄存器相对寻址取出两数进行比较。; 6-5.asm 将字数组part按升序排序...原创 2019-08-02 08:44:27 · 767 阅读 · 0 评论 -
汇编语言程序设计——循环结构例6
汇编语言程序设计——循环结构例6设计目标编程序实现两个多字节数相加运算。Z = X + Y ,设 X = 5488114433225634H,Y = 3499754783645231H,则 Z = 8921868BB686A865H设计思路(1)在数据段中定义两个多字节变量,低字节单元存放低位,高字节单元存放高位;(2)字节的个数 N 采用 EQU 赋值伪指令获得;...原创 2019-08-02 08:44:40 · 761 阅读 · 0 评论 -
汇编语言程序设计——循环结构例7
汇编语言程序设计——循环结构例7设计目标求出 X 字节数组中的最大数放入 MAX 单元。设计思路(1)先设定一个 MAX,依次从数组中取出元素与之比较,若大于 MAX,将该数送入 MAX,直至数组结束;(2)用 MAX 和 X 单元地址相减获得数组元素个数;; 6-7.asm 求X数组中的最大数放入MAX。data segment x db 12,4,55,32...原创 2019-08-02 08:44:47 · 791 阅读 · 0 评论 -
汇编语言程序设计——循环结构例8
汇编语言程序设计——循环结构例8设计目标将 Y 字节数组分类为正数(Z1)和负数(Z2)两个数组.设计思路(1) 由于数组定义为字节单元,因此数组元素个数 N 可用当前单元地址$ 和 Y 数组的首地址相减得到;(2) 在循环中用分支指令判断正数和负数,正数、负数的个数分别用 SI 和 DI 表示。; 6-9.asm 将字节数组Y分为正数和负数两个数组。data s...原创 2019-08-02 08:44:54 · 1634 阅读 · 0 评论 -
汇编语言程序设计——模块与子程序例1
汇编语言程序设计——模块与子程序例1重点:子程序结构,子程序的调用与返回设计目标多次输入一个 65535 以内的十进制数并以十六进制显示出来。按 ESC 键结束。设计思路(1)设主程序标号 LET0,一个子程序标号为 LET1,另一个子程序标号 LET2;(2)主程序是一个死循环,只有当按下 ESC 键时才能退出、结束程序;(3)子程序 LET1 功能为键盘输入,并...原创 2019-08-02 09:22:21 · 1326 阅读 · 1 评论 -
汇编语言程序设计——模块与子程序例2
汇编语言程序设计——模块与子程序例2设计目标求两个数组 ARRAY1 和 ARRAY2 的正数累加和。累加和分别放在 TOTAL1 和 TOTAL2 中。设计思路(1)采用 BX 和 SI 寄存器分别存放数组的地址和累加和单元的地址,将地址值传送到子程序中;(2)在子程序的运算过程中用基址变址方式到存储器中取出数组元素;(3)子程序的运算结果通过寄存器间接寻址方式保存到...原创 2019-08-02 10:00:21 · 723 阅读 · 0 评论 -
汇编语言程序设计——模块与子程序例3
汇编语言程序设计——模块与子程序例3设计目标从键盘输入学生姓名和成绩,按成绩升序排序,并显示出排序结果。本题目的关键之处在于从键盘输入的姓名和成绩都是 ASCII 码,排序时成绩要变为二进制数或 BCD 码。排序时不光是成绩顺序要改变,而且姓名顺序也要随之改变,显示的结果才正确。这是一个较大的程序,采用模块化结构将功能分解,用子程序调用和嵌套实现。设计思路(1)主程序和 5...原创 2019-08-02 10:06:26 · 1253 阅读 · 0 评论 -
汇编语言程序设计——模块与子程序例4
汇编语言程序设计——模块与子程序例4设计目标将键入的两个十进制数相加,并显示十进制结果。设计思路(1)主程序调用三个子程序。主程序用 JMP 构成循环,可多次做计算;如果按下的不是数字键则退出循环,结束程序;(2)SUBR1 子程序 1:功能为键盘输入,数字键 ASCII 码 → 十进制数(该十进制数保存为二进制),用存储单元 X 传参;(3)SUBR2 子程序 2:功...原创 2019-08-02 10:12:48 · 1762 阅读 · 0 评论 -
汇编语言程序设计——分支结构例1
汇编语言程序设计——分支结构例1设计目标设计分支程序,实现下列公式计算。X、Y 为字型。假设 X 单元中保存三个数:9,-6,34,分别作判断和计算设计思路(1)在数据段中定义 2 个字型变量 X、Y,均为带符号数;(2)在 X 单元中依次取出三个数分别作判断,根据 X 的大小作分支转移;(3)采用寄存器相对寻址方式(MOV AX,X[SI])取出 X 的三个值;...原创 2019-07-31 21:08:01 · 4902 阅读 · 0 评论 -
汇编语言程序设计——分支结构例2
设计目标设计分支程序。计算 Y=5X-18,如果结果为负,求绝对值。并显示十进制结果。设计思路(1)用数据段保存 X、Y。为简便,X 定义为字节,Y 定义为字;(2)用符号位 SF 判断运算结果的正负,为负数则求补(绝对值),如果是正数,直接保存结果;(3)采用将 AX 中的结果除以 10、取得余数的方法获得结果的十进制数;(4)将余数变为 ASCII 码,用 DOS 中断...原创 2019-08-01 09:52:35 · 1844 阅读 · 0 评论 -
汇编语言程序设计——分支结构例3
汇编语言程序设计——分支结构例3设计目标从键盘输入一串字符,如果是数字存入 NUMB 单元,如果是字母,将大写字母存入 CAPI 单元,小写字母存入 LETT 单元,分别统计个数,输入回车时退出。设计思路(1)用 TEST 测试指令来区分数字和字母:数字0-9的ASCII码: 30H~39H 00110000B~00111001B大写...原创 2019-08-01 11:19:05 · 1420 阅读 · 0 评论 -
汇编语言程序设计——分支结构例4
汇编语言程序设计——分支结构例4设计目标从键盘输入英文单词,将其中的小写字母变为大写。设计思路(1)用 AND 指令将小写字母的 ASCII 码的第 5 位变为 0 即为大写字母;(2)用 DOS 的 9 号功能显示提示信息;(3)用 DOS 的 10 号功能输入英文字母。5-4.asm;5-4.asm 输入英文单词,将小写转换为大写data segment...原创 2019-08-01 14:07:22 · 989 阅读 · 0 评论 -
汇编语言程序设计——分支结构例5
汇编语言程序设计——分支结构例5设计目标计算 0~9 的立方值并显示。设计思路(1)从键盘输入 0~9;可多次输入,按 ESC 键退出;(2)将输入的数字去掉 ASCII 码;(3)用连乘计算立方值,注意百位的判断;(4)用除以 10 取余得到百位、十位、个位数,并用 x 的三个单元分别存放;(5)显示十进制结果。5-5.asm;5-5.asm 计算0...原创 2019-08-01 14:32:09 · 1314 阅读 · 0 评论 -
汇编语言程序设计——分支结构例6
汇编语言程序设计——分支结构例6设计目标从键盘输入两个两位的十进制数,做加法运算,并显示结果。从键盘输入数字 0~9 的 ASCII 码为 30H~39H,要想用它们做十进制运算可以将其转换为 BCD 码。数字的 ASCII 码与压缩 BCD 码之间的转换有多种方式,此处采用位运算实现。设计思路(1)键盘输入一个两位数之后回车,再输入另外一个两位数。将 4 个数去掉 30H...原创 2019-08-01 15:07:16 · 1476 阅读 · 0 评论 -
汇编语言程序设计——分支结构例7
汇编语言程序设计——分支结构例7设计目标十进制与十六进制转换。将键盘输入的一个两位十进制数以十六进制形式显示在屏幕上。可多次输入直到按下 ESC 键。设计思路(1)用 DOS 的 1 号功能输入一个两位数,以回车结束;(2)将输入的数字减去 30H 保存在 X 单元,第 1 个数字扩大 10 倍再与第 2 个数相加,变为十进制数;(3)用 9 号功能显示提示信息;(...原创 2019-08-01 16:29:18 · 1213 阅读 · 1 评论 -
汇编实例1——Hello World
汇编实例1——Hello Worlddata segment buf db 'HELLO WORLD! THIS MY FIRST ASM FILE!$'data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax ;把数据段地址放入数据段寄存器ds LEA dx,buf ;把字符...原创 2019-07-25 09:30:53 · 808 阅读 · 0 评论 -
汇编实例2——循环累加
汇编实例2——循环累加计算ffff:0~ffff:b连续单元中存放数据的和,累加到dx中assume cs:codecode segmentstart: mov ax,0ffffh mov ds,ax mov dx,0 ;初始化dx,bx为0 mov bx,0 mov cx,12 ;循环次数放入cx中 s:mov al,[bx] mov ah,...原创 2019-07-25 10:01:28 · 3806 阅读 · 0 评论 -
汇编实例3——两数相加
汇编实例3——两数相加DATA SEGMENT INFOR1 DB "Please input the frist data(<10):$" INFOR2 DB 0AH,0DH,"Please input the second data(<10):$" INFOR3 DB 0AH,0DH,"The result is:$ " DATA E...原创 2019-07-25 15:07:02 · 5919 阅读 · 0 评论 -
汇编实例4——栈的应用,逆序存储
汇编实例4——栈的应用,逆序存储将data数据段中的数据利用栈的性质逆序存入ASSUME cs:codesg,ds:data,ss:stack data segment dw 0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CBAH,0987H ;数据段原始数据data ends stack segment dw 0,0,0,0...原创 2019-07-25 15:44:29 · 1017 阅读 · 0 评论 -
汇编实例5——大小写的转换
汇编实例5——大小写的转换问题1:将data段中的第一个字符串转换成大写,第二个字符串转换成小写分析:如何转换成大小写?如果利用ASCII码进行转换的话,需要判断该字符是大写还是小写,汇编语言实现太过困难,可以对字符串的二进制进行分析。在ASCII码中,大写字母的第五位为0,小写字母的第五位为1,可以对位取反进行大小写转换!assume cs:code,ds:data...原创 2019-07-25 19:52:55 · 4338 阅读 · 0 评论 -
汇编语言程序设计——屏幕显示和键盘输入
汇编语言程序设计——屏幕显示和键盘输入在汇编语言中,凡是涉及到键盘输入、屏幕显示等输入输出操作,都可以用软件中断指令INT n的功能调用来实现。所谓功能调用是计算机系统设计的简单 I / O 子程序,能方便地访问系统的硬件资源。在微机系统中,功能调用分两个层次,最底层的是 BIOS 功能调用,其次是 DOS 功能调用,它们都是通过软件中断指令INT n来进行调用的。除了用 IN...原创 2019-07-31 10:17:20 · 20432 阅读 · 2 评论 -
汇编语言程序设计——两数相乘
汇编语言程序设计——两数相乘例子:从键盘输入两个一位的十进制数,做乘法运算。相乘的结果保存在存储单元 X 中,算式显示在屏幕上。用简化的程序格式。设计思路(1)用 DOS 中断调用的 1 号功能输入数据,用 2 号功能显示结果,9 号功能显示提示信息;(2)做乘法时必须将输入数字的 ASCII 码去掉,转换成数值;(3)乘法之后用十进制调整指令 AAM;(4)将要显示的...原创 2019-07-31 11:04:17 · 11981 阅读 · 1 评论