data segment string1 db ‘assembly language’ data ends extra segment string2 db 17 dup(?) extra segment code segment assume cs:code,ds:data,es:extra
Category: Assembly
Compile a program to display the binary number in the BX register in hexadecimal form on the screen
code: code segment assume cs:code start: mov bx,1234H sub ax,ax mov ch,4 rotate: mov cl,4 rol bx,cl mov al,bl and
Assembler-displays a string “Hello” on the screen
Assembler-displays a string “Hello” on the screen This is the code when we learn assembly, for learning reference only. Source
Windows7 64位使用masm方法
第一步:下载 DOSbox 0.74,然后点击安装 第二步: 第二步:下载 masm 第三步:输入 mount c: d:\masm(下载的文件放在 d:\masm) 第四步:进入文件,输入 c: 第五步:编译 add.asm 第六步:链接 link add.obj 看到 add.exe
汇编程序——循环与分支结构
这是我学习汇编语言循环与分支结构的过程中总结的一些代码。 其中有参考我们老师的课件和清华大学出版社的《IBM—PC 汇编语言程序设计》。 仅供学习参考!禁止转载! 【例1】编程将内存数据段字节单元INDAT存放的一个数n(假设0≤ n ≤9 ),以十进制形式在屏幕上显示出来。 例如,若INSTR单元存放的是数8,则在屏幕上显示:8D。 思路:首先需要数据段里定义一个DB类型的10进制数,然后初始化寄存器,取操作数,将他转化为ASCII码,再利用2号DOS功能,显示字符‘D’。 代码: DATA SEGMENT ;数据段定义 INDAT DB 8 DATA ENDS CODE
汇编语言——十进制显示Bx的值
本例分两步实现。 (1)转换并保存结果 这一步将二进制数转换为十进制值,即求出十进制值各位上的数字。由于16位二进制数最大能表示的数是65535,所以,转换后,最多是一个万位的十进制数。转换的步骤就是:把要转换的数依次除以10000,1000,100和10,分别可以得到万位数字、千位数字、百位数字和十位数字。除以10得到的余数就是个位数字。程序中,将得到的这些数字先存入内存指定单元,供显示模块使用。 (2)显示 本例程序把转换和显示分成两个模块来实现,使得程序的结构清晰。 代码: DATA SEGMENT DECNUM DB 5 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV
win64环境下运行汇编程序
因为masm.exe和link.exe文件只有win32位下才能直接运行。在64位系统下就会报错:系统不兼容 但是,我们不能因为这个就放弃学汇编程序 首先,我们需要准备dos—box软件,直接搜dos-box。安装运行。 然后在电脑磁盘上建立一个文件夹,例如:在E盘上建立一个文件huibain,这个文件夹里有一个文件夹masm5.0,文件里有masm.exe,link.exe,debug.exe等文件 然后打开dos-box:注意两个窗口都不关闭。 在其中一个窗口上显示有:Z:> 我们在后面输入:mount e e:huibian 回车 然后在z:>后面输入e: 表示跳转到磁盘e 然后就会z:>变成E:> 接下来,在E:>后面输入cd masm5.0 然后就可以按照win32环境下的步骤运行汇编程序 首先:masm
汇编语言——冒泡排序
请用冒泡排序法编程将内存ARRAY单元开始存储的一组8位带符号数据按从大到小排列 : 冒泡法:N个数要进行N-1趟。第一趟从第一个开始一次对相邻两个数进行比较,若数的大小次序错误,则交换,否则不作任何操作。进行N-1次比较结束时,最小数排在最后。然后,进行第二趟,只需要进行N-2次比较,就可排好次小数。第三趟,进行N-3次比较,………依次类推。 代码: DATA SEGMENT NUM DB 5,9,8,7,3,15 LEN EQU $-NUM DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV
汇编语言:顺序和分支程序设计
内容1:编程将内存数据段字节单元INDAT存放的一个数n(假设0≤ n≤9 ),以十进制形式在屏幕上显示出来。 data segment indat db 8 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov
汇编程序——把数据段中的串string1传送到附加段的string2中
data segment ;定义数据段 string1 db ‘assembly language’ data ends extra segment ;定义附加段 string2 db 17 dup(?) extra segment code segment
编制一个程序把BX寄存器内的二进制数用十六进制的形式在屏幕上显示出来
代码: code segment assume cs:code start: mov bx,1234H sub ax,ax mov ch,4 rotate: mov cl,4 rol bx,cl mov al,bl and
汇编程序——在屏幕上显示一个字符串“Hello”
这是我们学习汇编的时候的代码,仅供学习参考。 源代码: data segment string db ‘Hello’,13,10,” ;字符串以’’符号结尾,以单引号括起来 data ends code segment assume cs:code,ds:data start: ;程序的入口地址 push ds ;save old
请用冒泡排序法编程将内存ARRAY单元开始存储的一组8位带符号数据按从大到小排列
题目 请用冒泡排序法编程将内存ARRAY单元开始存储的一组8位带符号数据按从大到小排列。 方法 冒泡法 程序 DATA SEGMENT NUM DB 5,9,8,7,3,15 LEN EQU $-NUM DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:
编程以十进制形式显示BX的值(假设为无符号数)。
题目 编程以十进制形式显示BX的值(假设为无符号数)。 步骤 (1)转换并保存结果。 (2)显示。 程序 DATA SEGMENT DECNUM DB 5 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV
编程以十六进制形式显示BX的值(假设为无符号数)。
题目 编程以十六进制形式显示BX的值(假设为无符号数)。 如(BX)=20,那么显示0014H。 程序 CODE SEGMENT ASSUME CS:CODE START: MOV BX,20 ;BX中存放的是要显示的数 MOV CH,4 NEXT: MOV CL,4 ROL BX,CL ;将最高4位二进制值移至低4位