益生菌生产控制:伤心汇编,大侠们帮帮忙忙啊

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 23:52:28
如果还是那几位朋友看这贴,请帮帮忙忙了,

我刚刚有言重之处,请多多谅解啊

我以为重金之下必有勇夫,不料,勇夫是有了,那人给的都运行不起

名词解释:
1:汇编程序
2:汇编语言源程序
3:IP
4:PSW
5:逻辑地址
6:段跨越
7:段缺省

简答:
1:简述倒数法
2:简述中断的过程

程序:
1:输入一个0-9的数字,把对应的数的星星输出
2:编Aa,Bb,Cc.............Zz 显示
3:输入一个字符,在屏幕上显示“刚输入的字符是:”
4:100个字符数据,冒泡法的由大到小排序
5:输入0-9之间的10个数,把最小的找出来,显示出来

各位大侠帮帮啊,运行起了,我再给你追加,好吗
谢谢您这位朋友

请问,可以告诉一下QQ吗?

简答题 不会,我QQ 是1655055

非常感谢您,我即刻给您追加20分,好吗?

补充:
⑴PSW中的 条件码 和 控制标志 是用来说明PSW中的标志位可以划分为这2大类.

⑵名词解释:

在这里先说明一下8086 CPU内存空间的分段情况:

由于8086 CPU的寄存器只有16位,而地址线有20根,为使用16位的寄存器访问20位的内存地址,8086 CPU将1M内存分成多个段(Segment)。每个段有自己的段起始地址,每个段的最大长度为64K。
段基值寄存器CS、DS、SS、ES中存放的就是代码段、数据段、堆栈段、附加段的起始地址。

①逻辑地址:

逻辑地址(Logic Address)是指在任何内存段内,任何一个内存单元的地址和该段的起始地址(段基值)的差值。也可以称为偏移地址或有效地址EA(Effective Address)。也就是说逻辑地址、
偏移地址、有效地址三者是等价的。

②段跨越:

由于8086 CPU内存空间采用分段技术,分为代码段、数据段、堆栈段、附加段四个段。而被寻址的内存单元则必然要落在这四个段中,其相应地址要表示为:16位段地址:16位偏移地址,才能被找到.

段跨越是指被寻址的内存单元的地址的形式为:16位段地址:16位偏移地址,但其“16位段地址”却不是默认的段基值。
例如:MOV AX,[BP],(段缺省)操作数的物理地址为SS:BP

MOV AX,DS:[BP],(段跨越)操作数的物理地址为DS:BP

MOV AX,[SI-2],(段缺省)操作数的物理地址为DS:SI-2

MOV AX,CS:[SI-2],(段跨越)操作数的物理地址为CS:SI-2

③段缺省

段缺省就是指在指令寻址过程中,被寻址的内存单元所处的段已被默认,不必再指明其所处的段名。也就是说相应地址可以表示为:16位偏移地址,可以将16位段地址省略。
大部分情况下,在没有指明16位段地址,即段前缀时,默认段寄存器为DS,而当用BP来寻址时,其默认段寄存器为SS。

简答:

1:简述倒数法

对不起,这个我从来都没见过,等我去图书馆查一下,看有没有这方面的资料再说吧。

2:简述中断的过程

如果是硬件中断的话,其过程如下:
⑴从数据线上读取中断类型码N
⑵把标志寄存器F压入堆栈
⑶关外部中断,禁止单步中断,既IF=0,TF=0
⑷把CS压入堆栈
⑸把IP压入堆栈
⑹根据中断类型码N从中断向量表中取中断服务子程序的入口地址
⑺程序转移到中断子服务程序处执行。
⑻中断返回IRET,自动弹出IP、CS、F内容。
如果是软件中断的话,即执行INT n指令时,不须执行第⑴步,不受IF屏蔽,其他则同上。

程序:
1:输入一个0-9的数字,把对应的数的星星输出

SSEG SEGMENT STACK
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT

DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX

L1: MOV AH,01H
INT 21H
CMP AL,'0'
JBE L1
CMP AL,'9'
JA L1
SUB AL,30H
MOV AH,00H
MOV CX,AX
MOV DL,'*'
L2: MOV AH,02H
INT 21H
LOOP L2
JMP L1

MOV AH,4CH
INT 21H

CSEG ENDS
END START

2:编Aa,Bb,Cc.............Zz 显示

SSEG SEGMENT STACK
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT

DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG

START: MOV AX,DSEG
MOV DS,AX
MOV CX,19H
MOV AL,41H
L1: MOV DL,AL
MOV AH,02H
INT 21H
ADD AL,20H
MOV DL,AL
MOV AH,02H
INT 21H
MOV DL,','
MOV AH,02H
INT 21H
SUB AL,20H
INC AL
LOOP L1

MOV DL,AL
MOV AH,02H
INT 21H
ADD AL,20H
MOV DL,AL
MOV AH,02H
INT 21H

MOV AH,4CH
INT 21H

CSEG ENDS
END START

3:输入一个字符,在屏幕上显示“刚输入的字符是:”

SSEG SEGMENT STACK
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT
BUF DB '刚输入的字符是:$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG

START: MOV AX,DSEG
MOV DS,AX

MOV AH,01H
INT 21H
MOV DX,OFFSET BUF
MOV AH,09H
INT 21H
MOV DL,AL
MOV AH,02H
INT 21H

MOV AH,4CH
INT 21H

CSEG ENDS
END START

4:100个字符数据,冒泡法的由大到小排序

SSEG SEGMENT STACK
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT
DATA DB 78,23,-12,0,-2,99 ;DATA中存放100个有符号数,
DB -11,-67,9,56 ;为说明问题只假设了这几个数
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX

MOV CX,9 ;这里9即数的个数
LP1: MOV DI,CX
MOV BX,0
LP2: MOV AL,DATA[BX]
CMP AL,DATA[BX+1]
JGE NEXT
XCHG AL,DATA[BX+1]
MOV DATA[BX],AL
NEXT: INC BX
DEC DI
JNZ LP2
LOOP LP1

MOV AH,4CH
INT 21H

CSEG ENDS
END START

5:输入0-9之间的10个数,把最小的找出来,显示出来

SSEG SEGMENT STACK
STK DB 20 DUP(?)
SSEG ENDS
DSEG SEGMENT

DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG

START: MOV AX,DSEG
MOV DS,AX

MOV BL,00H
MOV DH,00H
L1: MOV AH,01H
INT 21H
CMP AL,'0'
JB L1
CMP AL,'9'
JA L1

INC DH
CMP AL,BL
JA L2
MOV BL,AL

L2: CMP DH,0AH
JNE L1
MOV DL,BL
MOV AH,02H
INT 21H

MOV AH,4CH
INT 21H

CSEG ENDS
END START

名词解释:

1:汇编程序

完成汇编功能的程序称为汇编程序(Assembler),而这个翻译过程也称为汇编(Assemble)

2:汇编语言源程序

用汇编语言编写的程序称为汇编语言源程序,它是机器语言程序的一种符号表示.
由于计算机只能识别和执行机器语言程序,所以必须将汇编语言源程序翻译成机器码程序,即要进行汇编,生成目标程序.

3:IP

IP:指令指针寄存器(Instruction Pointer)。用来指示代码段中下一条将被在执行的指令的偏移地址(即CS:IP)。换句话说,就是IP中存放的是代码段中下一条将被在执行的指令的偏移地址的值.

4:PSW

程序状态字寄存器(Program State Word),是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:

15
14
13
12
11 OF
10 DF
9 IF
8 TF
7 SF
6 ZF
5
4 AF
3
2 PF
1
0 CF

条件码:
①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。
②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.

控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志