当前位置:首页 » 编程软件 » 写汇编程序

写汇编程序

发布时间: 2023-01-01 16:35:02

A. 一般用什么软件来写汇编程

楼主你好

编写汇编语言源程序一般用纯文本编辑就可以了,扩展名采用.ASM比较大众化。目前比较好的IDE是国内的masmplus,免费软件,下载地址在:
http://www.aogosoft.com/masmplus/

国际上比较着名的是radasm,但一般用不到那么高级,支持几十种编译器呢!

三级等级考试使用的是MASM 4.0的masm.exe和link.exe,知道怎么用即可。

建议楼主下载masmplus来写程序,或下载notepad++作为源码编辑环境。

楼主应该可以搞定的

B. 编写汇编语言程序

CODESEGMENT
.386
ASSUMECS:CODE
MSGDB'studentnumber:2018610801',13,10
DB'studentname:zhuzhu',13,10,'$'
MSG1DB'pressanybuttontocancel......','$'
START:PUSHCS
POPDS
PUSHCS
POPES
LEADX,MSG
MOVAH,9
INT21H

MOVAH,2AH
INT21H
MOVAX,CX
CALLDSPAX
CALLDSP1
MOVAL,DH
XORAH,AH
CALLDSPAX
CALLDSP1
MOVAL,DL
XORAH,AH
CALLDSPAX
CALLLFCR

MOVAH,2CH
INT21H
MOVAL,CH
XORAH,AH
CALLDSPAX
CALLDSP2
MOVAL,CL
XORAH,AH
CALLDSPAX
CALLDSP2
MOVAL,DH
XORAH,AH
CALLDSPAX
CALLLFCR

LEADX,MSG1
MOVAH,9
INT21H
MOVAH,1
INT21H

MOVAH,4CH
INT21H
;===============================
DSPAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
XORCX,CX
MOVBX,10
@DSPAX1:
XORDX,DX
DIVBX
INCCX
ORDX,30H
PUSHDX
CMPAX,0
JNE@DSPAX1
MOVAH,2
@DISPAX2:
POPDX
INT21H
LOOP@DISPAX2
;MOVDL,32
;INT21H
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPAXENDP
;==================================
DSP1PROCNEAR
PUSHAX
PUSHDX
MOVDL,'-'
MOVAH,2
INT21H
POPDX
POPAX
RET
DSP1ENDP
;==================================
DSP2PROCNEAR
PUSHAX
PUSHDX
MOVDL,':'
MOVAH,2
INT21H
POPDX
POPAX
RET
DSP2ENDP
;==================================
LFCRPROCNEAR
PUSHAX
PUSHDX
MOVAH,2
MOVDL,13
INT21H
MOVDL,10
INT21H
POPDX
POPAX
RET
LFCRENDP
;====================================
CODEENDS
ENDSTART

C. 编写汇编程序

例6.2设内存中有三个互不相等的无符号字数据,分别存放在ARG开始的字单元,编制程序将其中最大值存入MAX单元.
A,B,C


6.3分支结构程序设计-例6.2
1:;*****EXAM6.2*****
2:SSEG SEGMENT STACK
3:STK DB 20 DUP(0)
4:SSEG ENDS
5:DSEG SEGMENT
6:ARG DW 7138H,84A6H,29EH
7:MAXDW
8:DSEG ENDS
9:CSEG SEGMENT
10: ASSUME CS:CSEG,DS:DSEG
11: ASSUME SS:SSEG
12:FMAX:MOV AX,DSEG
13: MOV DS,AX
14: MOV AX,SSEG
15: MOV SS,AX
16: MOV SP,SIZESTK
17: LEA SI,ARG ;取数据首址
18: MOV AX,[SI] ;取第1个数
19: MOV BX,[SI+2] ;取第2个数
20: CMP AX,BX ;两数比较
21: JAE FMAX1 ;AX中的数大
22: MOV AX,BX ;大数送AX
23:FMAX1:CMP AX,[SI+4] ;大数与第3个数比较
24: JAE FMAX2 ;AX中的数大
25: MOV AX,[SI+4] ;第3个数大大值
26:FMAX2:MOV MAX,AX ;保存最大值
27: MOV AH,4CH
28: INT 21H
29:CSEG ENDS
30: ENDF MAX

二,实验内容:
编程实现对一个首地址为A的N字数组排序.
三,实验要求:
同实验一
四,实验提示
可采用多种排序算法实现该操作.采用冒泡排序方法参考程序如下:
DATA SEGMENT
A DW N DUP( )
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV CX,N
DEC CX
LOOP1:MOV DI,CX
MOV BX,0
LOOP2:MOV AX,A[BX]
CMP AX,A[BX+2]
JGE CONT
XCHG AX,A[BX+2]
MOV A[BX],AX
CONT:ADD BX,2
LOOP LOOP2
MOV CX,DI
LOOP LOOP1
RET
MAIN ENDP
CODE ENDS
END START
注意:该参考程序缺少初始数据输入和排序结果输出,同学们在做实验时应将这两个步骤考虑进去

D. 编写汇编语言程序

;本程序通过编译,运行正确。
datasegment
mes1db'92,85,74,81,70,68,65,78,54,43',0ah,0dh
db'94,100,83,88,79,83,79,69,62,60',0ah,0dh,'$';定义用于显示的字符串
mes2dw92,85,74,81,70,68,65,78,54,43
dw94,100,83,88,79,83,79,69,62,60;存放20个十进制数
elementsequ($-mes2)/typemes2;元素个数
mes3db'averagesore=$'
dataends
codesegment
assumecs:code,ds:data
start:movax,data
movds,ax
leadx,mes1;第一行显示20个同学的成绩
movah,9
int21h
leadx,mes3;第二行显示averagescore=求得的平均分数。
movah,9
int21h
cld
leasi,mes2
movcx,elements
xorax,ax
adding:addax,[si];累加20个同学的分数
incsi
incsi
loopadding
movbl,elements
divbl;计算20个分数的平均值
xorah,ah
movbl,10
divbl
orax,3030h;把商和余数转换成十进制显示的ascii码
movdx,ax
movah,2;以十进制值表示将平均值十位数显示在屏幕上
int21h
movdl,dh
movah,2;以十进制值表示将平均值个位数显示在屏幕上
int21h
movah,4ch;结束程序
int21h
codeends
endstart;编译到此结束
程序运行结果如下:
92,85,74,81,70,68,65,78,54,43
94,100,83,88,79,83,79,69,62,60
averagesore=75

E. 如何用汇编编写以下程序

一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。

一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。

程序结束标记

End 是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令 end,就结束对源程序的编译。

如果程序写完了,要在结尾处加上伪指令end 。否则,编译器在编译程序时,无法知道程序在何处结束。

F. 如何编写最简单的汇编语言

首先明白编译环境:以上4个exe程序必须在32机中运行,若是64位机,请参照dosbox0.74(如何在64位机中使用debug)使用方法。

了解计算机CPU原理:详情请参照“80X86计算机组织”和“80X86的指令系统和寻址方式”

首先有一道题:

求表达式Y=A*X+B-C的值,已知A、B、C分别存放在DA-1、DA-2、DA-3字节单元,它们的值分别是:5 、 6、 7,X存放在INPUT字节单元,结果Y放入JSJ_10字节单元。

分析顺序结构程序代码:由记事本敲出来的

data segment da_1 db 5 da_2 db 6 da_3 db 7 input db 1 jsj_10 db 0data ends ;这一段在内存中定义了一个段,叫做data,并且其中存入了5个变量并且付入初值,db代表每个变量占用1个字节,若是dd则为字,为2个字节code segment ;名字叫做code的段的定义,显然这儿作为代码段,当然code这个名字可以更改 assume cs:code,ds:data ;指定data为DS数据段,code为CS代码段start: mov ax,data ;加法指令 mov ds,ax ;加法指令 mov al,da_1 ;加法指令

mov bl,input ;加法指令

mul bl ;乘法 add al,da_2 sub al,da_3 ;减法 mov jsj_10,al

exit: mov ah,4ch int 21h ;这两行相当于ret(返回值),就像C语言中的return 0;

code ends end start

注释: XXXX segment

.............

XXXX ends ;定义一个段

assume ds:XXXX 把XXXX段指定为ds(ds是段地址寄存器)

请先提前把masm edit debug link文件放入预定的文件夹,并把编写的xxxx.asm代码文件放入该文件夹,asm文件可用记事本写成,并改格式txt为asm(有的看不到文件后缀.txt的请参照网络)

G. 如何编写完整的汇编程序

data segment (segment和ends是一对,一定是成对出现的)
…… (这中间就是申明你需要的数据段,例如:mess db 1,2,3;其中mess只是一个名字,可以根据自己需要来,db表示每个字符占的存储空间,也可以用dw,dd,db是一个字节;后面的数据根据实际情况来)
data ends (这是数据段)
extra segment
…… (申明和数据段一样)
extra ends (这是附加段)
code_seg segment (这是代码段)
assume cs:code_seg,ds:data,es:extra (这个一定不能少,而且顺序不能换,也就是说cs一定对应代码段,后面也是相同的)
start: (start可以没有,但冒号不能少)
mov ax,data (这四句是固定的,只能根据名称不同改变data、extra的名称,其它不能变)
mov ds,ax
mov ax,extra
mov es,ax
…… (这中间就是你说的那些代码)
code_seg ends (这两句也不能少)
end start

热点内容
sql表的复制 发布:2025-09-18 11:02:25 浏览:67
三位密码锁忘记密码如何重置 发布:2025-09-18 10:21:52 浏览:184
linux怎么编译c文件 发布:2025-09-18 09:55:16 浏览:304
python安装后无法运行 发布:2025-09-18 09:45:57 浏览:239
安卓手机怎么剪辑音乐 发布:2025-09-18 09:44:16 浏览:784
服务器地址修改在哪找 发布:2025-09-18 09:42:41 浏览:444
sntp服务器地址 发布:2025-09-18 09:28:36 浏览:555
phpunit 发布:2025-09-18 09:25:19 浏览:573
怎么改服务器的ip地址吗 发布:2025-09-18 09:24:33 浏览:14
编译703n固件 发布:2025-09-18 08:50:59 浏览:541