
【8086汇编】
基于8086CPU的汇编语言学习,采用汇编语言王爽第三版作为教材进行汇编语言的学习和分享。
重庆李四
追求卓越,过完一生
展开
-
汇编程序—将一个全是字母,以0结尾的字符串,转化为大写
程序思路我们有一个现成的指令jcxz 可以判断cx寄存器中是否0,可以将data段的数据一个一个放到cx中,紧接着调用jcxz指令,如果cx为0 跳出子程序,如果不为0进行大写转化! 这里为了方便展示,将转换前后的字符串都放到屏幕中进行展示,代码中有一定的注释!程序代码assume cs:code,ss:stackdata segment db 'laymond',0d...原创 2018-07-08 17:34:23 · 2614 阅读 · 0 评论 -
汇编指令:使用汇编指令计算2的8次方
预备知识使用汇编语言经典教材 王爽老师的《汇编语言第三版》 对汇编语言进行学习。在装完DosBox环境之后,就可以用debug模式进行汇编指令的编程了。下面我们看下在debug模式下常用的命令:R命令:查看、改变CPU寄存器的内容;D命令:查看内存中的内容;E命令:改写内存中的内容;U命令:将内存中的机器指令翻译成汇编指令;T命令:执行一条机器指令;A命令:以汇原创 2018-01-09 20:04:28 · 13282 阅读 · 2 评论 -
汇编语言:使用汇编程序计算2的8次方
预备知识在博客 汇编指令:使用汇编指令计算2的8次方 中使用汇编指令进行计算的,太不可科学了,是用来熟悉汇编 练习指令滴。这次我们用真正的汇编语言进行编程来计算2的8次方。在本程序中,没有直接的数学库什么之类的快捷算法,只有 笨拙的累加,循环的进行累加,循环的功能还是有的,计算机最擅长的当然是循环了。在本程序中,会用到loop 循环指令,mov 传送指令 ,将寄存器内容送到内存单元中.原创 2018-01-22 14:38:08 · 8997 阅读 · 1 评论 -
汇编语言:利用栈的特性对内存数据进行逆置
问题介绍今天我们来解决这样一个问题,利用栈的的特性,将代码段中定义的数据进行逆序存放。请看下面代码段:assume cs:code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ;?code endsend start预备知识对代码段使用数据是dw(define word)原创 2018-01-25 11:12:39 · 812 阅读 · 0 评论 -
汇编语言:编写code段中代码,将a段和b段中的数据依次相加,将结果放到c段
题目介绍程序如下,编写code段中代码,将a段和b段中的数据依次相加,将结果放到c段。代码展示;编写code代码,将a段b段中的数据依次相加,将结果存在c段中。assume cs:code,ds:a,ds:b,ds:c a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7,8 b ends原创 2018-01-25 22:01:33 · 9651 阅读 · 3 评论 -
汇编语言:编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中
题目介绍程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中。assume cs:code,ds:a,ss:b a segment dw 1,2,3,4,5,6,7,8,9,0ah,0ch,0dh,0eh,0fh,0ffh a ends b segment dw 0,0,0,0,0,0,0,0 b ends code segmen原创 2018-01-25 22:17:47 · 6589 阅读 · 0 评论 -
汇编语言:编写代码实现字符串的复制
问题介绍编写代码 实现字符串’welcome to masm!’复制到它后面的数据区中。assume cs:code,ds:datadata segment db 'welcome to masm!' ;共16个字符 db '................' ;data ends代码展示data segment db 'welcome to masm!' ;共16原创 2018-01-30 00:04:41 · 8778 阅读 · 0 评论 -
汇编语言:实现大小写字母转换
问题介绍编程,将datasg段中每个单词的前4个字母改为大写字母。用栈段存储临时数据。代码展示;编程,将datasg段中每个单词的前4个字母改为大写字母;用栈来存储临时数据assume cs:code,ds:datasg,ss:stackdatasg segment db '1.display ' ;16个字节,将每个单词的前4个字母改为大写 db原创 2018-01-30 00:21:14 · 16098 阅读 · 0 评论 -
汇编语言:编程,将datasg段中的每个单词改为大写字母
问题介绍编程,将datasg段中的每个单词改为大写字母。用栈段存储临时数据。代码展示;编程,将datasg段中的每个单词改为大写字母;用栈来存储临时数据assume cs:code,ds:datasg,ss:stackdatasg segment db 'ibm ' ;16个字节,将前三个字节的字母转为大写 db 'dec原创 2018-01-30 00:28:40 · 5413 阅读 · 1 评论 -
汇编语言:实验7寻址方式在结构化数据访问中的应用
实验介绍下面程序中,已经定义好了这些数据:assume cs:codesg,ds:tabledata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db ...原创 2018-02-09 14:55:00 · 2089 阅读 · 0 评论 -
汇编语言:实验8分析一个奇怪的程序
实验介绍实验8 分析一个奇怪的程序分析下面的程序,在运行前思考:这个程序可以正确返回吗?运行后再思考:为什么是这种结果?实验代码;实验8 分析一个奇怪的程序;分析下面的程序,在运行前思考:这个程序可以正确返回吗?;运行后再思考:为什么是这种结果?assume cs:codesgcodesg segment mov ax,4c00h int 21hstart: mov ax,0s...原创 2018-02-10 18:56:32 · 2569 阅读 · 0 评论 -
汇编语言:汇编程序的hello world程序(实验9根据材料编程)
实验介绍学习每一种编程语言,第一个程序一般都是hello world,一般都是往控制台进行输出。但是学习汇编语言,汇编语言王爽这本书学习了一大半才有了往控制台输出内容。这是教材中的实验9 根据材料编程的实验,在屏幕中间分别显示黑底绿色、绿底红色、白底蓝色的字符串'welcome to masm!'。权且当做汇编语言的hello world的吧。实验结果先展示运行程序运行结果原创 2018-02-13 22:44:09 · 2243 阅读 · 1 评论 -
汇编语言:实验10 根据材料编程—1.显示字符串
问题描述显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色。实验效果将字符串展示到8行3列黑底蓝字。实验要求子程序描述名称:show_str功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。参数:(dh)行号(取值范围0~24),(dl原创 2018-02-16 00:31:12 · 1751 阅读 · 0 评论 -
汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来
问题描述编程,将data段中的数据以十进制的形式显示出来。data segment dw 123,12666,1,8,3,38data ends实验效果实验要求子程序描述名称:dtoc功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。参数:(ax)=word型数据,ds:si指向字符串的首地址返回:无实验代码实现代码中原创 2018-02-16 00:44:25 · 5040 阅读 · 0 评论 -
汇编语言:实验10 根据材料编程—2.解决除法溢出的问题
问题描述用div做除法的时候可能产生除法溢出。由于有这样的问题,在进行除法运算的时候要注意除数和被除数的值,比如1000000/10就不能用div指令来计算。那么怎么办?我们用下面的子程序divdw解决实验效果实验要求子程序描述名称:divdw功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。参数:(ax)=d原创 2018-02-16 11:51:14 · 832 阅读 · 1 评论