barriers / 阅读 / 详情

用汇编语言编写一个程序

2023-10-03 21:54:41
共4条回复
小菜G

感楼主诚意,费了九牛二虎之力,方才完成。不知能否满足要求。

; 本程序通过编译,运行正确

Code Segment

Assume CS:Code,DS:Code

CR equ 000DH

LF equ 000AH

KBBack equ 0008H

Name_Len equ 18 ;用户名最大长度

Pass_Len equ 8 ;密码最大长度

; -------------------------------------

; 将用户名和密码定义为一个结构类型

User Struc ; 成绩单结构类型

User_Name db Name_Len dup(?) ; 用户名

Name_Lenth db ? ;用户名实际长度

Pass_Word db Name_Len dup(?) ; 密码

Pass_Lenth db ? ;密码实际长度

User EndS

; -------------------------------------

; 功能:显示指定地址(Str_Addr)的字符串

; 入口:

; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr

; 用法举例:Output PromptStr

Output MACRO Str_Addr

lea dx,Str_Addr

mov ah,9

int 21h

EndM

; -------------------------------------

; 功能:取光标位置

; 入口:无

; 出口:DH=行号,DL=列号

GetCursor Proc Near

PUSH AX

PUSH BX

PUSH CX

PUSH DX

XOR BX,BX

MOV AH,3

INT 10H

MOV Cursor_Row,DH

MOV Cursor_Col,DL

POP DX

POP CX

POP BX

POP AX

RET

Cursor_Row DB ?

Cursor_Col DB ?

GetCursor EndP

; -------------------------------------

; 功能:置光标位置

; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)

SetCursor Proc Near

PUSH DX

PUSH CX

PUSH BX

PUSH AX

MOV DH,Cursor_Row

MOV DL,Cursor_Col

XOR BX,BX

MOV AH,2

INT 10H

POP AX

POP BX

POP CX

POP DX

RET

SetCursor EndP

; -------------------------------------

; 窗口上滚指定行数

Roll_Up Proc Near

xor bh,bh ;显示页号

mov ah,8 ;读光标位置的字符和属性

int 10h

mov bh,ah ;上滚窗口空行属性

mov cx,100h ;左上角坐标

mov al,5

mov dx,54fh ;右下角坐标

mov ah,6

int 10h

ret

Roll_Up EndP

; -------------------------------------

; 功能:输入指定位数的用户密码,实际输入的密码字符以“*”显示,并有回空纠错功能

; 入口:di=密码输入缓冲区地址

; 出口:AL=实际输入的密码字符数

Input_PassW Proc Near

push di

mov cx,Pass_Len ;密码最大长度

@@Input: call GetCursor ;取光标位置

mov ah,7 ;从键盘接受一个字符

int 21h

cmp al,CR ;回车符?

jz @@Calc_Chrs ;是,结束密码输入,转去计算实际输入的密码字符数

cmp al,KBBack

jz @@KB_Back ;若是回空键,重新输入

stosb ;保存输入的字符

mov dl,"*"

mov ah,2

int 21h

jmp @@KBBack

@@KB_Back: dec Cursor_Col

inc cx

dec di

@@KBBack: inc Cursor_Col

call SetCursor ;置光标位置

loop @@Input ;接受下一个数字

@@Calc_Chrs:mov cx,di

pop di

sub cx,di

cmp cl,[si.Pass_Lenth]

jnz @@Pass_Err ;密码长度不等

mov cl,[si.Pass_Lenth]

xor ch,ch

push si

lea si,[si.Pass_Word]

cld

repz cmpsb ;比较密码是否正确

pop si

jcxz $+4

@@Pass_Err: clc ;进位标志复位,表示密码不正确

ret

stc ;进位标志置位,表示密码正确

ret

Input_PassW EndP

; -------------------------------------

Again_Input Proc Near

Output Input_Again ;提示:是否重新输入用户名

mov ah,1 ;从键盘接受一个字符

int 21h

or al,20h ;转换成小写,大小写不敏感

cmp al,"y" ;重新输入?

jnz $+7 ;不

call Roll_Up ;窗口上滚指定行数

stc ;进位标志置位,表示重复前面的操作

ret

cmp al,"n" ;不重新输入?

jnz Again_Input ;不是,非有效字母,重新输入

clc ;进位标志复位,表示放弃前面的操作

ret

Again_Input EndP

; -------------------------------------

Users equ 5 ;用户数

Even

User_Inform User <"richcon",7,"12345678",8>

User <"WangMing",8,"21345678",8>

User <"ZhangHongQiao",13,"13245678",8>

User <"LiYan",5,"12435678",8>

User <"XuPengYu",12,"12354678",8>

Prompt_User db "User name: $"

Prompt_Word db "Pass word: $"

Empty_Error db 7,CR,LF,CR,LF,"User name is empty.$"

Register_No db 7,CR,LF,CR,LF,"No register.$"

Pass_Error db 7,CR,LF,CR,LF,"Pass word error!$"

Welcome db 7,CR,LF,CR,LF,"WELCOME$",0

Input_Again db CR,LF,CR,LF,"Do you input user name again(y/n)?$"

Start: push cs

pop ds ;使数据段与代码段同段

push cs

pop es ;使附加段与代码段同段

Output Prompt_User ;提示输入用户名

call GetCursor ;取光标位置

Input_Name: call SetCursor ;置光标位置

lea dx,Buffer ;数据缓冲区地址

mov ah,0ah ;键盘缓冲区输入

int 21h

lea si,Buffer[1] ;实际输入的字符数地址

lodsb ;取实际输入的字符数

test al,al ;空串?

jnz Valid_Test ;不是,检测输入的用户是否注册

Output Empty_Error ;提示用户名为空

jmp Input_Name ;重新输入用户名

Valid_Test: mov cx,Users ;注册用户数

lea si,User_Inform ;注册用户信息地址

Valid_Test0:cmp al,[si.Name_Lenth] ;输入的用户名长度=用户名实际长度?

jnz Next_One ;不相等,与下一个注册用户名比较

push cx

push si

lea si,[si.User_Name]

lea di,Buffer[2] ;实际输入的用户名地址

mov cl,al

xor ch,ch

cld

repz cmpsb ;比较用户名是否已注册

stc ;进位标志置位,表示用户名已注册

jcxz $+3

clc ;进位标志复位,表示用户名未注册

pop si

pop cx

jc Input_Pass ;用户名已注册,转去输入用户密码

Next_One: add si,type User ;下一个注册用户信息地址

loop Valid_Test0

Output Register_No ;提示:非注册用户

call Again_Input ;是否继续

jc Input_Name ;进位标志置位,转去重新输入用户名

jmp Exit_Proc ;不重新输入用户名,结束程序

Input_Pass: mov word ptr Cursor_Row,1

call SetCursor ;置光标位置

Output Prompt_Word ;提示输入密码

lea di,Buffer ;密码缓冲区地址

call Input_PassW ;输入密码

jc @@Welcome ;密码输入正确,显示欢迎信息

Output Pass_Error ;提示密码输入错误

call Again_Input ;是否继续

jc Input_Pass ;进位标志置位,转去重新输入密码

jmp Exit_Proc ;不重新输入密码,结束程序

@@Welcome: Output Welcome ;显示欢迎信息

Exit_Proc: mov ah,4ch ;结束程序

int 21h

Buffer db 20 ;数据缓冲区

Code ENDS

END Start ;编译到此结束

wio

一个密码输入程序,错误的话就报警。。。

你可以仿写

STACK SEGMENT STACK

DW 64 DUP(?)

STACK ENDS

DATA SEGMENT

PASSWORD DB "1","2","3","4","5","6"

WRR DW 4553,4508,3615,4553,4508,3615,0000H

RII DW 4553,0000H

REPTT DW 4553,4508,3615,0000H

ERROR DB 0DH,0AH,"Keycode error!","$"

FA DB 0DH,0AH,"RETURN(F1)","$"

FB DB 0DH,0AH,"EXIT(F2)","$"

FC DB 0DH,0AH,"modify keycode(F1)","$"

right DB 0DH,0AH,"Your are right!","$"

bu DB 0DH,0AH,"NEW PASSWORD:","$"

buf DB 0DH,0AH,"REPEAT:","$"

INP DB 0DH,0AH,"INPUT OLD PASSWORD:","$"

MO DB 0DH,0AH,"Keycode modification succeed!","$"

input DB 0DH,0AH,"INPUT PASSWORD:","$"

NEW DB 6 DUP(?)

NEW2 DB 6 DUP(?)

DATA ENDS

CODE SEGMENT

start proc far

ASSUME CS:CODE,DS:DATA

MAIN: MOV AX,DATA

MOV DS,AX

MOV BX,03H

STA: MOV CX,06H

call appear2

MOV DX,OFFSET INPUT

MOV AH,9

INT 21H ;显示INPUT PASSWORD:

MOV SI,OFFSET NEW

JU: CALL INN

LOOP JU ;输入密码

MOV CX,06H

MOV DI,OFFSET PASSWORD

MOV SI,OFFSET NEW

COMP:

MOV AL,[DI]

CMP [SI],AL

JNZ WR

INC SI

INC DI

LOOP COMP

JMP RI

WR: MOV SI,OFFSET WRR

CALL RING

MOV DX,OFFSET ERROR

MOV AH,9

INT 21H ;显示ERROR

call appear1

call delay

AA6: DEC BX

CMP BX,00H

JZ vvv

JMP STA

vvv: JMP OVER

AA7: JMP WR

RI: MOV DX,OFFSET right

MOV AH,9

INT 21H

call appear2

MOV SI,OFFSET RII

CALL RING

aa:

MOV AH,00H

INT 16H

CMP AH,3CH

JZ vv

CMP AH,3DH

JZ REPT2

JMP aa

vv: JMP OVER

REPT2: MOV DX,OFFSET INP

MOV AH,9

INT 21H

MOV DI,OFFSET PASSWORD

MOV CX,06H

MOV SI,OFFSET NEW

A1: call INN

LOOP A1

MOV CX,06H

MOV SI,OFFSET NEW

MOV DI,OFFSET PASSWORD

COMPP:

MOV AL,[DI]

CMP [SI],AL

JNZ AA7

INC DI

INC SI

LOOP COMPP

K1: MOV DX,OFFSET bu

MOV AH,9

INT 21H

MOV SI,OFFSET NEW

MOV CX,6

K2: CALL INN

LOOP K2

MOV DX,OFFSET buf

MOV AH,9

INT 21H

MOV SI,OFFSET NEW2

MOV CX,6

K3: CALL INN

LOOP K3

MOV SI,OFFSET NEW

MOV DI,OFFSET NEW2

MOV CX,6

K4: MOV AL,[SI]

CMP [DI],AL

JNZ K1

INC SI

INC DI

LOOP K4

MOV CX,06H

MOV SI,OFFSET PASSWORD

MOV DI,OFFSET NEW

K5: MOV AL,[DI]

MOV [SI],AL

INC SI

INC DI

LOOP K5

MOV SI,OFFSET REPTT

CALL RING

call appear1

MOV DX,OFFSET MO

MOV AH,9

INT 21H ;

;报警延时

call delay

JMP STA

OVER: mov ah,4ch

int 21h

;INT 20H

RET

start endp

INN PROC

push bx

MOV AH,00H

INT 16H

CMP AH,3DH

JZ BB

CMP AH,3Ch

JZ BBB

MOV [SI],AL

INC SI

MOV DL,"*"

MOV AH,2

INT 21H

pop bx

RET

BB: pop bx

JMP REPT2

BBB: JMP OVER

INN ENDP

RING PROC

push bx

mov al,03h

out 61h,al

MOV AL,0B6H

OUT 43H,AL

CC1: MOV DX,[SI]

CMP DX,0000H

JNZ CC3

MOV AL,90H

OUT 61H,AL

pop bx

RET

CC3:

OUT 42H,AL

XCHG AL,AH

OUT 42H,AL

INC SI

mov DI,500

CC5: mov CX,65534

CC4:

push AX

pop AX

loop CC4

dec DI

cmp DI,00h

jnz CC5

jmp CC1

RING ENDP

DELAY PROC ;实现5秒的准确延时子过程

push bx

MOV AH,2CH ;取系统时间

INT 21H

MOV BH,DH

ADD BH,05H ;时间秒数加五

YY: MOV AH,2CH

INT 21H

CMP BH,DH;延时五秒到了吗?没有就继续去取系统时间

JZ RT3

JMP YY

RT3: pop bx

RET

DELAY ENDP

appear1 proc

push bx

mov DX,OFFSET FA

MOV AH,9

INT 21H

MOV DX,OFFSET FB

MOV AH,9

INT 21H

pop bx

RET

appear1 endp

appear2 proc

push bx

mov dx,offset FC

mov ah,9

int 21h

mov dx,offset fb

mov ah,9

int 21h

pop bx

ret

appear2 endp

CODE ENDS

END MAIN

再也不做稀饭了

请给出具体要求,然后才能编写。

可乐

这种小功能每种编程工具都可以实现,不过你总要说出是想用哪种吧.....

相关推荐

【汇编程序】的意思是什么?【汇编程序】是什么意思?

【汇编程序】的意思是什么?【汇编程序】是什么意思? 【汇编程序】的意思是: 一种语言翻译程序。能把用汇编语言编写的源程序翻译成目标程序。能检查源程序中的语法错误,并打印出有错的语句行和出错信息。产生的目标程序与源程序的语句一一对应。★「汇编程序」在《汉语辞海》的解释 汇编程序是什么意思 一种语言翻译程序。能把用汇编语言编写的源程序翻译成目标程序。能检查源程序中的语法错误,并打印出有错的语句行和出错信息。产生的目标程序与源程序的语句一一对应。 ★「汇编程序」在《汉语辞海》的解释 用汇编程序造句 1.按行汇编程序;逐行汇编程序2.汇编程序接受助记符源码程序,并产生机器目标模块;3.汇编程序设计中,用项和括号对的组合所代表的一个或多个操作。4.汇编程序设计中使用的一种名(字)项。5.汇编程序在预汇编时对其求值的一种表达式。6.在汇编程序设计中,指出定点数或浮点数的小数部分在目标代码中所占用的位数。>
2023-09-11 00:42:171

汇编程序和汇编源程序有什么区别?两者的作用是什么?

一、结构不同1、汇编程序:汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。2、汇编源程序:汇编源程序 = 汇编指令 + 伪指令。二、组成不同1、汇编程序:一个汇编程序是由多个段组成的,这些段被用来存放代码、数据、或当作栈空间来使用。2、汇编源程序:源程序中最终由计算机执行、处理的指令或数据。三、分类不同1、汇编程序:简单汇编程序、模块汇编程序、条件汇编程序、宏汇编程序、高级汇编程序。2、汇编源程序:分为伪指令(编译器处理)和汇编指令(编译为机器码)。
2023-09-11 00:42:281

汇编程序如何运行

  汇编程序是用伪代码编写而成,一定要编译成机器码才能运行。不过假如汇编程序不大,可以在DEBUG内编写和调试运行。具体步骤是:   1、点击开始里的运行选项,输入字母cmd,打开命令提示符;   2、输入cd,进入C盘根目录;   3、输入debgm,调用程序运行指令;   4、在debug模式中,就可以输入自己想运行的汇编指令。
2023-09-11 00:43:121

如何快速看懂汇编语言程序?

首先得了解汇编指令吧,其次得用机器的逻辑思考问题,明白其中的存储、累加、判断、转移等概念。比如,1+2+....+100这样的问题,虽然我们可以给出公式计算,但机器并不知道,它只能知道,而且只能每次做一个加法,而且鉴于CPU的架构不能存所有的这些数值-如果这些数量不定的话更复杂,比如这些数是放在一个内存区域的,内存区域约定如下:第一个数表示总共有多少个数,后面是相应的数据,在这些数没有规律时是不能用公式的。另外,许多CPU约定只有一个累加器(同时也是一个寄存器,假设它是寄存器AX),它允许从内存读一个数(MOV或者LD指令),只能进行内存数据加法(ADD [地址])。于是我们只能这样,首先设置指针寄存器BX:start: mov BX,#地址 ; 设置内存区域起始地址,保存在BX中 mov CX,[BX]; 取出总数到CX中,假设CX可以做简单递增或递减 dec CX ; 预减一次计数器,因为加法只需做CX-1次 inc BX mov AX, [BX]; 取出数据loop: inc BX ;递增BX,使之指向真实数据 ADD AX,[BX];用下一数据进行累加,并将结果保存在AX中 dec CX ;假定这个减法会影响标志位ZF JNZ loop ;如果没有减到0就继续loop到这里之间的操作 mov [BX], AX; 保存累加结果到数据区的尾部 HALT ; 停机可以看出,上述代码并不能告诉我具体结果是多少,除非我们通过工具去访问这一内存区域,于是一个系统会设计出来专门让我们进行基本的输入输出,把计算机的内部情况甚至内存情况通过I/O口送出来,这些IO设备,比如键盘负责接收我们的机器指令(可以是汇编结果,也可以是高级语言产生的二进制指令和数据流),把结果输出到打印机或者CRT这样的输出设备上(通常映射为端口,IO PORT)。这就是BIOS完成的工作,如int 8负责时钟,int 10负责屏幕,int 16负责键盘等等。更进一步,可以进一步封装称DOS调用,如int 21负责基本的输入输出包括文件操作等等。WINDOWS等操作系统则通过驱动层进行多级抽象提供操作界面给编程人员,编程人员再进一步封装出对话框或全屏文字菜单或流式(行式操作)操作界面给最终用户。
2023-09-11 00:43:221

单片机汇编语言程序的三种基本结构

顺序,选择,循环
2023-09-11 00:43:323

请问汇编程序, 解释程序, 编译程序分别指?

请问汇编程序, 解释程序, 编译程序分别指?初学者,就不用理解那么多了。当你编写几个程序之后,这些问题,根本就算不上问题了。
2023-09-11 00:43:484

什么是汇编程序,编译程序,解释程序?分别说明他们的功能

程序按执行方式分为编译和解释两种。编译就是将各种语言编写的程序翻译成机器语言(二进制)的过程。编译好程序就是编译程序。编译程序在执行时不依靠其它程序,执行速度快。缺点是要对其修改非常麻烦,一般要将其反编译成高级语言,修改后在编译,往往一个程序要反复修改的话就非常麻烦。解释是程序在执行时外部程序进行翻译。其特点与编译相反,是解释一句执行一句,这样以来如果有大规模的程序运行会起来比较慢,而且其依靠能对其进行解释的外部环境;但因为只在运行时才进行解释,事先无需对整篇程序进行编译,修改起来就比较方便。我们非常熟悉C语言、Basic语言等就都提供编译和解散两种执行方式,我们可以以解释的方式对其进行调试、修改,而把定型后的程序整篇进行编译,以便日后执行。再说明白些,就像一片英文报告,编译就是把它整篇翻译成中文后让我们来看,解释就是它一句一句翻译给我们听。汇编语言是一种使用广泛、功能强大基础的编程语言(和C语言、basic语言、VC、Java等语言一样,都是一个编程工具而且),用汇编语言编写的程序就是汇编程序。
2023-09-11 00:44:292

什么是汇编语言程序

汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。汇编语言:计算机中真正可以处理的只是由“0”、“1”组成的二进制代码,这种指令代码易出错且不易修改,由于依赖于机器,使用极不方便,于是人们发明“指令的助记符”,用几个字母(往往就是其含义的英文单词或缩写)代替某条指令,如加法用ADD表示,这种符号系统的扩大就是汇编语言。使用汇编语言编程,优点是运行效率高,可直接对硬件内部进行控制,缺点是需对硬件有更深入的了解,而且编程效率不高,并且与机器的体系结构仍有一定的依赖关系。
2023-09-11 00:44:412

汇编程序是指由汇编语言编写的程序,对么?

汇编程序语言是一门编程语言汇编程序只是个程序不过它是由汇编语言编写的程序
2023-09-11 00:44:513

汇编程序是指用汇编语言编写的源程序,不同计算机的汇编程序通常是相同的

是的,这个说法是正确的
2023-09-11 00:45:024

什么是编译程序和汇编程序?

用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器语言表示的目标程序(这个过程即编译),才能由计算机执行。执行转换过程的程序叫编译程序。汇编程序是指没有编译过的汇编语言源文件。编译程序转换过的叫目标程序,也就是机器语言。编译程序的工作情况有三种:汇编型、解释型和编译型。汇编型编译程序用来将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。解释型编译程序将高级语言程序的一个语句,先解释成为一组机器语言的指令,然后立即执行,执行完了,取下一组语句解释和执行,如此继续到完成一个程序为止。用解释型编译程序,执行速度很慢,但可以进行人和计算机的"对话",随时可以修改高级语言的程序。BASIC语言就是解释型高级语言。编译型编译程序将高级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程进行很快,在过程中,不能进行人机对话修改。FORTRAN语言就是编译型高级语言。
2023-09-11 00:45:133

怎么用电脑的命令符窗口进行汇编程序?

你的安装汇编语言编译器 masm之类的工具
2023-09-11 00:45:252

汇编程序解释

花钱买毕设吧, 潇洒了四年 是该花点钱毕业了
2023-09-11 00:45:352

什么是汇编语言源程序,汇编程序,目标程序

汇编语言源程序就是你根据汇编语言书写规范编写的完成指定功能的汇编语言指令集合,是一个文本文件。汇编程序是一个工具软件,负责对你前面编写的源程序文件进行编译,形成编译文件。目标程序就是能够被CPU最终识别执行的目标代码,由与汇编程序配套的连接程序完成。
2023-09-11 00:45:451

汇编语言程序的运行过程

(1) 用编辑程序(EDIT)建立ASM源文件;(2) 用MASM程序把ASM文件(即汇编语言程序)转换成OBJ文件;(3) 用LINK程序把OBJ文件转换成EXE文件;( 4) 用调试程序DEBUG调试EXE文件;(5)   在DOS命令行下直接键入EXE文件名就可以执行该程序;
2023-09-11 00:45:551

c语言中如何调用汇编程序

1、如果汇编程序是可执行文件,比如exe文件,则可以使用system函数直接调用。比如下面的代码,用system()打开windows上的记事本程序。#include #include int main(){system("notepad.exe");return 0;}2、在C语言源码中,可以通过内联汇编来直接编写汇编程序代码。不同的编译器使用内联汇编的方法不同,vc/vs编译器中一般使用__asm关键字来使用内联汇编,gcc编译器一般使用asm关键字来使用内联汇编,以vc6.0为例,下面的代码通过使用内联汇编来计算1+1,并将结果保存到int型变量result中。#include int main(){int result;_asm {mov eax,1mov ebx,1add eax,ebxmov result, eax}printf("1+1=%d ", result);return 0;}
2023-09-11 00:46:231

将汇编语言源程序翻译成机器语言目标程序的是什么

是汇编程序。把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观。但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。扩展资料:分类:1、简单汇编程序简单汇编程序 又称“装入并执行”式汇编程序。由于简便而得到广泛使用。这种汇编程序的特点是汇编后的机器语言程序直接放在内存之中准备执行。目标程序所占据的存储位置是在汇编时固定的,并且以后不能改变,所以这种工作方式不能将多个独立汇编的子程序合并为一个完整的程序,而且只能调用位置与目标程序不冲突的程序库中的子程序。2、模块汇编程序模块汇编程序 为适应模块程序设计方法而研制的。它除了克服简单汇编程序的缺点之外,还提供并行设计、编码和调试不同程序模块的能力,而且更改程序时只更改有关的模块即可。每个汇编后的程序模块称为目标模块,多个目标模块经连接装配程序组合成一个完整的可执行的程序。3、条件汇编程序条件汇编程序 主要特点是具有选择汇编某些程序段的能力。它适用于编写选择性较大的程序或程序包,以便根据用户的需要和设备的配置情况剪裁、编制适当的软件。这种汇编语言通常要引入“条件转移”、“转移”等汇编指示,以便根据用户指定的汇编条件有选择地汇编某些程序段或控制汇编程序的加工路径。参考资料来源:百度百科--汇编程序
2023-09-11 00:46:331

汇编用什么软件

问题一:用什么软件编写汇编语言呢 学单片机吧,用这个软件吧,集汇编、仿真一体的。而且是共享的。 51汇编集成开发环境 ,点击放大 问题二:要学习汇编语言要用什么软件? 你下载个ma *** 32v10唬,里面的编辑器可以直接编译 或者去论坛aogosoft/bbs看看 问题三:谁能介绍一下汇编用什么软件好 keil吧,汇编和c都可以,支持的机型也多 问题四:汇编是用什么软件编的? 清华大学出版社出版的《汇编语言》是经典教材,作者:朱玉龙等。图书ISBN:7302068119 汇编语言是用二进制语言编写,也就是我们常说的机器语言,汇编语言与处理器密切相关。每种处理器都有自己的指令系统,相应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差。相对来说,高级语言与具体计算机无关,高级语言程序可以在多种计算机上编译后执行。 汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试起来也比较困难。高级语言提供了强大的功能,采用类似自然语言的语法,所以容易被掌握和应用,它不必关心诸如标志汇编语言本质上就是机器语言,它可以直接、有效地控制计算机硬件,因而容易产生运行速度快、指令序列短小的高效率目标程序。高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大、程序难以优化,所以运行速度较慢。 可见汇编语言的主要优点就是可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。这些优点使得汇编语言在程序设计亥占有重要的位置,是不可被取代的。汇编语言的缺点也是明显的。它与处理器密切有关,要求程序员比较熟悉计算机硬件系统、考虑许多细节问题,导致编写程序繁琐,调试、维护、交流和移植困难。因此,有时可以采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题。 汇编语言用助记符代替操作码,用地址符号代替操作数。由于这种“符号化”的做法,所以汇编语言也称为符号语言。用汇编语言编写的程序称为汇编语言“源程序”。汇编语言“源程序”不能直接运行,需要用“汇编程序”把它翻译成机器语言程序后,方可执行,这一过程称为“汇编”。汇编语言“源程序”比机器语言程序易读、易检查、易修改,同时又保持了机器语言执行速度快、占用存储空间少的优点。汇编语言也是“面向机器”的语言,不具备通用性和可移植性。 问题五:汇编语言 有什么软件啊 汇编语言(Assembly Language)是面向机器的程序设计语言。 在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。 使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。 ■对于不同型号的计算机,有着不同的结构的汇编语言 汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。 汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。 汇编语言中由于使用了助记符号,用汇编语言编制的程序输入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的汇编程序的加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。 汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。 ■html属于汇编吗? 不属于汇编语言。它是Hypertext Markup Language的缩写,用来编写网页的语言.通常一个网页的网址最后面有或者都是用这种语言编写的. 另外,它一般用来编写静态网页,现在最流行的动态语言有ASP,.NET和PHP等等. 问题六:汇编语言编程需要什么软件? 以下都鼎以: 1、汇编器 ma *** 的ml.exe 2、文本编辑器 ultra edit 3、资源编辑器 调试器 Microsoft visual stutio 4、连接器 microsoft的link.exe 5、反汇编器win32da *** 问题七:汇编用什么软件编译啊? 通常我都用记事本或者ultra-edit写程序,然后进到命令行里,用ma *** 编译链接,最后用debug调试,这是标准流程啊。 汇编小站上介绍了一个工具叫ma *** plus,据说是一个类似于vc的IDE,你可以看下,上面对它的评价挺高的。 问题八:汇编语言用什么软件编 MASM 是可视化界面。调试、操作方便 ! 具体请看:baike.baidu/...Px7MuP DOS 下 汇编 存储 编译较麻烦! 问题九:汇编语言用什么编译软件 80x86 的汇编语言,用:MASM.EXE MCS-51 的汇编语言,用:KEIL.EXE 还有很多种汇编语言,自己百度吧。 问题十:用哪个软件可以制作电子版制度汇编 QikPg?1.6设计师大众版是QikPg?首次推出的免费数字互动设计软件,目的是为了让更多的人来制作数字互动书籍。任何人都可以像搭积木一样制作出多媒体互动的App电子书、App杂志、App宣传册、App影集、App教程、App攻略,或者其它的App作...
2023-09-11 00:46:511

开发汇编语言源程序的主要步骤有哪些

汇编语言程序设计的基本步骤:1. 分析问题先全面分析题目,看它给出了什么条件,有什么特点,找出规律,归纳出数学模型,也可能有些问题不用写出数学模型或写不出数学模型。2.确定算法有了数学模型,或虽然没有数学模型但已把题目分析清楚了,就选择一个合适的算法和适当的数据结构。如果没有可供选用的现成的算法和结构,就需要针对具体问题设计一个算法或结构。3.绘制流程图流程图就是用图形的方式把解决问题的算法直观地描述出来。对于一个比较复杂的问题,画出流程图,这有助于对问题的理解以及有助于编写出正确的程序。当然,如果算法比较简单,也可不画流程图。4.分配存储空间和工作单元用汇编语言编写程序时,需要给程序中的变量指定内存单元地址或指定寄存器。5.编写程序要把题目中需要处理的数据合理地根据2、3、4步的工作,选用适合的指令,并按一定的语法规则编写相应的程序。6.静态检查静态检查就是用人工的方式检查程序是否有错误,包括算法错误和语法错误等,如果有错误,及时改正过来。7.上机调试运行任何程序必须经过调试,才能检查出解题目的是否正确以及程序是否符合设计思想。
2023-09-11 00:47:011

汇编语言程序设计题

DATAS SEGMENT STR1 DB "The first number a is(eight byte):$" STR2 DB "The second number b is(eight byte):$" STR3 DB "The answer of the a+b=$" D1 DB 02FH,03FH,04FH,02FH,02FH,02FH,0FH,0H ;预设要相加的两个八字节数,可任意设置 D2 DB 0H,0F2H,0F2H,0F2H,0F4H,0F4H,0F4H,0H D3 DB 100 DUP(0)DATAS ENDSSTACK SEGMENT STACK "STACK" DB 100 DUP(?)STACK ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKMAIN PROC FAR START: PUSH DS XOR AX,AX PUSH AX MOV AX,DATAS MOV DS,AX MOV DX,OFFSET STR1 ;输出第一个八字节数 MOV AH,9 INT 21H LEA DI,D1 ;因为D1中低位在前,高位在后,所以输出D1要倒着输出 ADD DI,7 MOV CX,8 CALL XS MOV DX,0AH ;回车换行 MOV AH,2 INT 21H MOV DX,0DH MOV AH,2 INT 21H MOV DX,OFFSET STR2 ;同理,输出D2 MOV AH,9 INT 21H LEA DI,D2 ADD DI,7 MOV CX,8 CALL XS MOV DX,0AH ;回车换行 MOV AH,2 INT 21H MOV DX,0DH MOV AH,2 INT 21H MOV DX,OFFSET STR3 MOV AH,9 INT 21H MOV SI,OFFSET D1 ;调用XJ子程序作八字结数相加 MOV DI,OFFSET D2 MOV BX,OFFSET D3 MOV CX,4 CALL XJ JNC L1 MOV [BX],1 ;CF=1,最高位置1 L1:LEA DI,D3 ADD DI,8 MOV CX,9 CALL XS ;输出相加的结果 RETMAIN ENDP MOV DL, 0DH MOV AH, 2H INT 21H MOV DL, 0AH MOV AH, 02H INT 21HXJ PROC CLC AA:MOV AX,[SI] ;用循环实现八字节相加,两字节两字节进行 ADC AX,[DI] MOV [BX],AX PUSHF ADD SI,2 ADD DI,2 ADD BX,2 POPF LOOP AA RETXJ ENDPXS PROCLP2:MOV AL,[DI] MOV BL,AL PUSH CX MOV CL,4 SHR AL,CL ;右移4位 CALL PP ;第一次调用输出每个字节的高4位 MOV AL,BL CALL PP ;第二次调用输出每个字节的低4位 POP CX DEC DI LOOP LP2 ;循环分别输出结果的9个字节 RETXS ENDPPP PROC AND AL,0FH ;取AL中的低4位 CMP AL,10 ;比较低4位与10的大小 JB S ;小于,则直接输出低4位 ADD AL,7 ;否则加7后再输出 S:ADD AL,30H MOV DL,AL MOV AH,2 INT 21H RETPP ENDP MOV AH,4CH INT 21HCODES ENDS END START 希望能够帮到你!(*^__^*) 嘻嘻……
2023-09-11 00:47:134

什么是汇编和汇编语言

汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。 汇编语言是一种低级计算机编程语言,出现在计算机发展史的早期,但现在仍广泛应用于计算机开发领域,应为是绝大多数语言的基础.是一种面向机器的语言,即运行与操作都与计算机硬件密切相关. C语言是一种高级语言,有利于人为操作,近于面向对象与面向机器之间VB就是一种面向对象的编程语言,功能更加强大可移植性高,是当今最广泛的语言之一。
2023-09-11 00:47:201

如何快速看懂汇编语言程序?

首先得了解汇编指令吧,其次得用机器的逻辑思考问题,明白其中的存储、累加、判断、转移等概念。比如,1+2+....+100这样的问题,虽然我们可以给出公式计算,但机器并不知道,它只能知道,而且只能每次做一个加法,而且鉴于CPU的架构不能存所有的这些数值-如果这些数量不定的话更复杂,比如这些数是放在一个内存区域的,内存区域约定如下:第一个数表示总共有多少个数,后面是相应的数据,在这些数没有规律时是不能用公式的。另外,许多CPU约定只有一个累加器(同时也是一个寄存器,假设它是寄存器AX),它允许从内存读一个数(MOV或者LD指令),只能进行内存数据加法(ADD [地址])。于是我们只能这样,首先设置指针寄存器BX:start: mov BX,#地址 ; 设置内存区域起始地址,保存在BX中 mov CX,[BX]; 取出总数到CX中,假设CX可以做简单递增或递减 dec CX ; 预减一次计数器,因为加法只需做CX-1次 inc BX mov AX, [BX]; 取出数据loop: inc BX ;递增BX,使之指向真实数据 ADD AX,[BX];用下一数据进行累加,并将结果保存在AX中 dec CX ;假定这个减法会影响标志位ZF JNZ loop ;如果没有减到0就继续loop到这里之间的操作 mov [BX], AX; 保存累加结果到数据区的尾部 HALT ; 停机可以看出,上述代码并不能告诉我具体结果是多少,除非我们通过工具去访问这一内存区域,于是一个系统会设计出来专门让我们进行基本的输入输出,把计算机的内部情况甚至内存情况通过I/O口送出来,这些IO设备,比如键盘负责接收我们的机器指令(可以是汇编结果,也可以是高级语言产生的二进制指令和数据流),把结果输出到打印机或者CRT这样的输出设备上(通常映射为端口,IO PORT)。这就是BIOS完成的工作,如int 8负责时钟,int 10负责屏幕,int 16负责键盘等等。更进一步,可以进一步封装称DOS调用,如int 21负责基本的输入输出包括文件操作等等。WINDOWS等操作系统则通过驱动层进行多级抽象提供操作界面给编程人员,编程人员再进一步封装出对话框或全屏文字菜单或流式(行式操作)操作界面给最终用户。
2023-09-11 00:47:301

汇编和编程有什么区别

总而言之,编程是一种行为,汇编(语言)是一种工具 ■什么是汇编语言 汇编语言(Assembly Language)是面向机器的程序设计语言。 在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。 使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。 ■对于不同型号的计算机,有着不同的结构的汇编语言 汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。 汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。 汇编语言中由于使用了助记符号,用汇编语言编制的程序输入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的"汇编程序"的加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。 汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。 目前通用的编程语言有两种形式:汇编语言和高级语言。 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。 汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。 简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
2023-09-11 00:47:411

简述用汇编语言进行程序设计的步骤。

汇编语言程序设计步骤:(1)分析问题:已知条件、要解决的问题、功能/性能要求等。(2)建立数学模型:把问题数学化、公式化,便于计算机处理。(3)确定算法:简单、速度快、精度高、代码量小、编程容易。(4)绘制程序流程图:用箭头、框图、菱形图等表示程序结构。(5)内存空间分配:为程序或数据分配内存空间。(6)编制程序与静态检查:程序结构层次简单、清楚、易懂。(7)程序调试:利用调试软件DEBUG进行调试。
2023-09-11 00:48:002

把汇编语言编制的源程序变为目标程序,要经过哪些步骤?

词法分析:词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。语法分析:编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。中间代码:中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码,即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。
2023-09-11 00:48:101

如何运行汇编程序

现在有汇编的集成软件~如果没有集成软件的你就找link.exe跟masm.exe写好程序后存储~然后运行link.exe~弹出个dos对话框~把*.asm文件拖进去或者输入文件路径~按3次回车~此过程是编译过程~如果程序编译不通过会在这里提示~编译通过3次回车之后dos窗口关闭~文件存储位置会多一个*.obj文件~运行masm.exe~也是弹出dos窗口~将obj文件拖入窗口或者输入路径~3次回车~生成*.exe文件~生成的exe可以直接运行~既是你写的程序所执行的文件
2023-09-11 00:48:371

汇编程序

MOV AX,1234H ;将1234H放到寄存器AX里面MOV BX,5678H ;将1234H放到寄存器BX里面ADD AL,BL ;将AX的地位AL,和BX的地位BL,即AL=34H+78H=BCH(16进制)DAA ;压缩BCD码调整指令(AL=AL+60H),即AL调整后,AL=12H(CF=1)MOV CL,AL ;AL赋值到CLMOV AL,AH ;AL赋值到AHADC AL,BH ;带进位相加,AL=AL+BH +CF=69HDAA ;压缩BCD调整。AL=69H执行程序后(AL),(CL) 结果AL=69H,CL=12HDAA指令功能是将超过A0H的数值加60H后转换为十进制表示的数。不超A0H不用加60H。
2023-09-11 00:49:221

帮忙注释下这个汇编程序

data segment buf1 db "16jzs: $" ;显示输入十六进制数提示信息 buf2 db "10jzs: $" ;显示输出十进制数显示信息 pab dw 10000,1000,100,10,1 data ends stack segment para stack "stack" ;定义一个堆栈段db 10 dup (?) ;申请10个字节的空间stack ends ;段定义结束code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax ;把数据段的地址传到数据段寄存器mov si,offset pab ;把pab的地址给simov dx,offset buf1 ;同上mov ah,9 int 21h ;调用9号dos功能xor ax,ax ;清零axxor bx,bx ;清零bxmov ch,4 qq:mov ah,1 int 21h ;调用1号dos功能cmp al,"f";比较al的值和f ja exit1 ;如果不低于或等于则跳转到exit1jmp aaa1 ;无条件跳转到aaa1bbb1:cmp al,"F" ;比较al的值和FJa exit1 ;jmp aaa2 bbb2:cmp al,"9"; 比较al的值和9ja exit1 ;如果不低于或等于则跳转到exit1jmp ccc2 ;无条件跳转到ccc2cmp al,"a" ;比较al的值和9jae ccc1 ;高于或等于则转移到ccc1jmp bbb1 ;无条件转移ccc1:sub al,20h ;减法cmp al,"A" aaa2: cmp al,"A" jae ccc2 jmp bbb2 ccc2: cmp al,"0" jb exit1 sub al,30h cmp al,9 ja nex jmp oo nex:sub al,7 oo:and al,0fh add bl,al cmp ch,1 jz www mov cl,4 shl bx,cl dec ch jnz qq www:mov dl,13 mov ah,2 ;dos功能调用int 21h mov dl,10 int 21h mov dx,offset buf2 mov ah,9 int 21h mov ax,bx mov bp,ax lop0:xor cl,cl mov bx,[si] lop1: 循环sub ax,bx jb next inc cl jmp lop1 next:add ax,bx push ax ;进栈add cl,30h call disp ;子程序调用pop ax inc si inc si cmp bx,1 jnz lop0 jmp exit1 disp proc mov dl,cl mov ah,2 int 21h ret;返回调用前的 disp endp exit1:mov ah,4ch int 21h code ends end start;结束不是很难,耐心的看一下就懂了
2023-09-11 00:49:321

汇编语言MOV指令

编汇语言mov指令,指的是中指,中指这一个指令的执行。结束词指令的行刑行。
2023-09-11 00:49:434

解释 一下 汇编 程序

自己用debug的u命令 ,t命令研究一下吧!那样对你的效果或许会更好
2023-09-11 00:50:123

单片机汇编程序

晕!1分钟定时,真的要那么麻繁吗?这是练手程序吧?!
2023-09-11 00:50:224

求解释汇编程序

1、c口高四位和低四位的输入输出定义不是根据同组的A口或者B口决定的。因为这里没有用到C口,所以你随便设置为02、MOV DL,0FFH MOV AH,06H INT 21H 是DOS中断服务功能号为06H---直接控制台I/O服务。当DL=0FFH时候,是从标准输入(键盘)获得用户按键(不等待),当DL=字符ASCII码时候向标准输出(屏幕)输出
2023-09-11 00:50:321

汇编程序

;首先,这里面有in.h、input和output函数等,你没有的话,我传给你;另外,程序需要在dos下ml和link,命令你不知道的话我告诉你;程序先要求输入命令,我加入了“0”这条命令,表示结束程序;若不输入0,则程序会回到开始重新开始新的循环;排序方法是冒泡排序法,分别写了两个子程序.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.hcr EQU 0dhLf EQU 0ah.STACK 4096.DATAout0 byte "请输入命令:1表示输入 2代表增序 3代表降序", cr, Lf, 0out1 byte "请输入所需的数的个数", cr, Lf, 0out2 byte "请输入数据", cr, Lf, 0out3 byte "结果是:", cr, Lf, 0out4 byte "输入错误", cr, Lf, 0lenth dword 1 ; //记录要输入的数的个数,初始为1number dword 20 DUP (?) ; 最多20个数string byte 11 DUP (?), 0newline byte cr, Lf, 0PUBLIC _start.Code_start:begin:output out0input string, 11atod stringcmp eax, 0 ; 输入0表示终止程序je endofcmp eax, 1je inputnumbercmp eax, 2jne else1call increasejmp outoutelse1:cmp eax, 3jne else2call decreasejmp outoutelse2:output out4jmp begininputnumber:output out1input string, 11atod stringmov lenth, eaxmov ecx, eaxlea edi, numberoutput out2forinput:input string, 11atod stringmov [edi], eaxadd edi, 4loop forinputjmp beginoutout:output out3mov ecx, lenthlea edi, numberforoutput:dtoa string, [edi]output stringadd edi, 4loop foroutputoutput newline ; 输出回车jmp beginendof:INVOKE ExitProcess, 0increase PROC NEAR32 ; 增序排列mov eax, lenthbegin1:dec eaxcmp eax, 0jng end1mov ecx, eaxlea edi, numberforincrease:mov ebx, [edi]cmp ebx, [edi+4]jng nochange1mov ebx, [edi]xchg ebx, [edi+4]xchg ebx, [edi]nochange1:add edi, 4loop forincreasejmp begin1end1:retincrease ENDPdecrease PROC NEAR32 ; 降序排列mov eax, lenthbegin2:dec eaxcmp eax, 0jng end2mov ecx, eaxlea edi, numberfordecrease:mov ebx, [edi]cmp ebx, [edi+4]jnl nochange2mov ebx, [edi]xchg ebx, [edi+4]xchg ebx, [edi]nochange2:add edi, 4loop fordecreasejmp begin2end2:retdecrease ENDPEND
2023-09-11 00:50:432

汇编程序

楼主没有说干什么的,补充完整。莫名奇妙的问题
2023-09-11 00:50:532

汇编程序和汇编源程序有什么区别?两者的作用是什么?

汇编软件(如MASM)将汇编源程序(由汇编指令和伪指令组成,拓展名是ASM)弄成可以执行的程序(如EXE和COM)
2023-09-11 00:51:214

请问汇编程序, 解释程序, 编译程序分别指?

1、汇编程序把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。2、解释程序解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。3、编译程序编译程序也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。扩展资料:工作过程1、汇编程序输入汇编语言源程序。检查语法的正确性,如果正确,则将源程序翻译成等价的二进制或浮动二进制的机器语言程序,并根据用户的需要输出源程序和目标程序的对照清单;如果语法有错,则输出错误信息,指明错误的部位、类型和编号。最后,对已汇编出的目标程序进行善后处理。2、解释程序由总控程序完成初始化工作。依次从源程序中取出一条语句进行语法检查,如有错,输出错误信息;如果通过了语法检查,则根据语句翻泽成相应的指令并执行它。检查源程序是否已经全部解释执行完毕,如果未完成则继续解释并执行下一条语句,直到全部语句都处理完毕。3、编译程序先进行词法分析与语法分析,然后生成中间代码,接着对程序进行多种等价变换来代码优化,最后生成目标代码。参考资料来源:百度百科—汇编程序参考资料来源:百度百科—解释程序参考资料来源:百度百科—编译程序
2023-09-11 00:51:361

什么是汇编程序,编译程序,解释程序?它们的功能是什么?

什么是汇编程序、编译程序、解释程序?它们的功能是什么?初学者,就不用理解那么多了。当你编写几个程序之后,这些问题,根本就算不上问题了。
2023-09-11 00:52:002

如何快速看懂汇编语言程序

边读程序边查找汇编语言指令手册各个语句的含义并在语句后面注释
2023-09-11 00:52:127

什么是汇编程序,编译程序,解释程序?分别说明他们的功能

【汇编程序】:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。【编译程序】:把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言的目标程序的翻译程序。【解释程序】:对源程序边解释翻译成机器代码边执行的高级语言程序。高级语言的程序的执行的途径:1)源程序(高级语言)->【编译程序】->目标程序(汇编语言)->【汇编程序】->目标程序(机器语言)->计算结果2)源程序(高级语言)->【编译程序】->目标程序(机器语言)->计算结果3)源程序(高级语言)->【解释程序】(逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序)->计算结果
2023-09-11 00:52:311

汇编语言分几种?分别都是干什么的

汇编语言分几种?--CPU 有多少种? 汇编语言就有多少种。分别都是干什么的--汇编语言是最接近计算机硬件的编程语言。--每一句汇编语言,都是对计算机硬件操作。
2023-09-11 00:52:434

汇编语言源文件是什么?

汇编语言源文件是什么?汇编语言源文件,都是文本文件。文件的内容,都是ASCII 码。存盘时,扩展名可以使用:ASM、A51、等等。
2023-09-11 00:53:222

汇编语言 把下面这个程序每条指令加注释,尽量的详细

CRLF MACRO;定义宏 MOV DL,0DH;调用DOS中断字符输出,输出字符ASCLL是0DH,即换行符 MOV AH,02H;中断功能号02H INT 21H;DOS中断,21H MOV DL,0AH;调用DOS中断字符输出,输出字符ASCLL是0AH,即回车 MOV,AH,02H;中断功能号02H INT 21H;;DOS中断,21HENDM ;宏定义结束DATA SEGMENT ;数据段 DATA1 DB 33H,39H,31H,37H,34HDATA2 DB 36H,35H,30H,38H,32HDATA ENDS;数据段结束STACK SEGMENT堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STA ;预定义TOP为STA的长度STACK ENDS;堆栈段结束CODE SEGMENT;代码段ASSUME CS:CODE,DS:STACK,ES:DATA ;指定相关段START: MOV AX,DATA;把DATA段的段地址赋予AX MOV DS,AX;通过AX把DATA段地址赋予DS MOV AX,STACK;把STACK段的段地址赋予AX MOV SS,AX;通过AX把STACK段地址赋予SS MOV AX,TOP;把TOP赋予AX MOV SP,AX;把AX的值赋予栈指针,即让SP指向堆栈段段尾 MOV SI,OFFSET DATA2;把变量DATA2的偏移地址赋予SI MOV BX,05;把BX赋值为05 CALL DISPL;调用子程序DISPL CRLF;宏CRLF,即输出换行符 MOV SI,OFFSET DATA1;把变量DATA1的偏移地址赋予SI MOV BX,05;把BX赋值为05 CALL DISPL;调用子程序DISPL CRLF;宏CRLF,即输出换行符 MOV DI,OFFSET DATA2;把变量DATA2的偏移地址赋予DI CALL ADDA;调用子程序ADDA MOV SI,OFFSET DATA1;把变量DATA1的偏移地址赋予DI MOV BX,05;把BX赋值为05 CALL DISPL;调用子程序DISPL CRLF;宏CRLF,即输出换行符 MOV AX,4C00H ;准备调用DOS终端结束程序,功能号4CH,返回值0 INT 21H;调用DOS中断 DISPL PROC NEAR ;子程序DISPL DS1:MOV AH,02 ;准备调用DOS中断,功能好02,即字符输出 MOV DL,[SI+BX-1];字符的ASCLL代码在[SI+BX-1]中 INT 21H;调用中断 DEC BX;BX值减1 JNZ DS1;条件跳转到DS1,即重复5次 RET;子程序返回 DISPL ENDP;子程序结束 ADDA PROC NEAR;子程序NEAR MOV DX,SI;SI值赋予DI MOV BP,DI;DI值赋予BP MOV BX,05;把BX赋值为05 AD1:SUB BYTE PTR[SI+BX-1],30H;[SI+BX-1]中的数值减30H SUB BYTE PTR[DI+BX-1],30H;[DI+BX-1]中的数值减30H DEC BX ;BX值减1 JNZ AD1;条件跳转,即循环5次 MOV SI,DX;把DX的值赋予SI MOV DI,BP;把BP的值赋予DI MOV CX,05;把CX赋值为05 CLC;CF标识符清零 AD2: MOV AL,[SI];把[SI]中的值赋予AL MOV BL,[DI];把[DI]中的值赋予BL ADC AL,BL;AL=AL+BL AAA;非压缩BCD码调整 MOV [SI],AL;AL的值赋予[SI] INC SI;SI=SI+1 INC DI;DI=DI+1 LOOP AD2;循环跳转AD2 MOV SI,DX;SI赋值为DX的值 MOV DI,BP;DI赋值为BP的值 MOV BX,05;BX赋值为05 AD3:ADD BYTE PTR[SI+BX-1],30H;[SI+BX-1]中的数值加30H ADD BYTE PTR[DI+BX-1],30H;[DI+BX-1]中的数值加30H DEC BX;BX=BX-1 JNZ AD3;条件跳转到AD3 RET;子程序返回 ADDA ENDP;子程序结束 CODE ENDS;代码段结束 END START;程序结束
2023-09-11 00:53:321

什么是汇编?

汇编就是所有语言汇总在一起编写叫做汇编.
2023-09-11 00:53:533

一道汇编程序题

MOV BX,0024H ;BX=0024HLEA BX,[BX] ;BX=0024H(取0024的地址,还是0024)OR BX,0 ;BX=0024H(零的或运算,结果不变,但CF=0)ADC BX,[BX] ;CF+0024H+2856H=287AH结果:BX=287AHCF=0 ;没有进位发生OF=0 ;没有溢出发生
2023-09-11 00:54:031

什么是汇编 汇编代码是什么呀 详细些

fhqswcan 我跟你说啊 汇编语言(Assembly Language)是面向机器的程序设计语言。 在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。 使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。 ■对于不同型号的计算机,有着不同的结构的汇编语言 汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。 汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。 汇编语言中由于使用了助记符号,用汇编语言编制的程序输入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的"汇编程序"的加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。 汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
2023-09-11 00:54:132

什么是汇编语言源程序,汇编程序,目标程序

汇编语言源程序就是你根据汇编语言书写规范编写的完成指定功能的汇编语言指令集合,是一个文本文件。汇编程序是一个工具软件,负责对你前面编写的源程序文件进行编译,形成编译文件。目标程序就是能够被CPU最终识别执行的目标代码,由与汇编程序配套的连接程序完成。
2023-09-11 00:54:231

汇编源程序经过编译后是什么?谁能提供,我想看一下。谢谢

汇编程序编写的一般过程:1、编辑:EDIT 文件名.ASM2、汇编:MASM 文件名; 用.ASM(源文件)生成.OBJ(目标文件), 也可生成.LST(列表)、.CRF(交叉引用)3、连接:LINK 文件名; 用.OBJ文件生成.EXE(可执行文件) 也可生成.MAP(存储映象), 还可使用.LIB(库文件)4、调试:DEBUG 文件名.EXE 按每个模块(子程序)的输入输出关系检查即编译后生成obj文件,链接后生成exe文件
2023-09-11 00:54:351

把汇编语言编制的源程序变为目标程序,要经过哪些步骤?

正确答案: A、汇编汇编,是将汇编语言源程序翻译成机器目标代码的过程。解释,是将高级语言的源程序逐句翻译成机器语言并逐句执行的过程。编辑,是指修改内容编译,是将高级语言的源程序以文件为单位整体翻译成另一种语言(一般是低级语言,如汇编语言或机器语言)的等价程序的过程。
2023-09-11 00:54:472

给下面汇编程序添加注释

1.把十六进制259F转换为是进制9631data_seg segment DATAX dw 259FHdata_seg endscode_seg segmentmain proc farassume cs:code_seg,ds:data_segstart: push ds sub ax,ax push ax;以上几句,保存返回地址 mov ax,data_seg mov ds,ax;定义数据段址 mov bx,DATAX ;取待转换十六进制数259FH mov cx,1000d ;CX←1000 call div_display mov cx,100d ;CX←100 call div_display mov cx,10d ;CX←10 call div_display mov cx,1d ;CX←1 call div_display mov ah,07;等待按键 int 21h ret;按任一键,退出程序 main endp div_display proc near mov dx,0;高位DX清0 mov ax,bx;首次取259FH,其后是取回余数 div cx;除以CX mov bx,dx;余数送BX暂存 mov dl,al;商送DL add dl,30h;化为相应数的ASCII码 mov ah,02h;输出DL中的字符 int 21h ret;子程序返回div_display endpcode_seg endsend start 2.统计十六进制数1CE8中 1的个数data_seg segment DATAX dw 1CE8Hdata_seg endscode_seg segmentmain proc far assume cs:code_seg,ds:data_segstart: push ds sub ax,ax push ax mov ax,data_seg mov ds,ax mov dl,0;计数器清0 mov ax,DATAX;取1CE8Hrepeat: test ax,0ffffh;测试,AX和FFFFH相与 jz to_print;为0转显示 jns shift;测试结果为正数,转标号shift inc dl;计数器+1shift: shl ax,1;AX左移一位 jmp repeat;转标号repeat执行to_print: cmp dl,0ah;DL与10做比较 js dis_num1;DL<9转标号dis_num1 add dl,37h;DL中数转为ASCII码(A~F) jmp display1dis_num1: add dl,30h;;DL中数转为ASCII码(0~9)display1: mov ah,02 int 21h;输出DL中的一个字符 mov ah,07 int 21h;暂停 ret main endp code_seg ends end start
2023-09-11 00:55:361

如何用汇编语言输出下述程序的结果?

(3)++后置,先运算再增1;--后置,先计算在减1.int x=-1,y=4,k;k=x++<0&&!(y--<0);等价于:k=x<0&&!(y<0);x+=1;y-=1;计算k时,x是-1,<0,真;y是4,<0,假,其否为真。真为1,假为0,所以,k是1。输出时,x是0,y是3,k是1.
2023-09-11 00:55:451