文档视界 最新最全的文档下载
当前位置:文档视界 › 汇编作业和实验的程序题

汇编作业和实验的程序题

汇编作业和实验的程序题
汇编作业和实验的程序题

汇编精华实验题

6.7 设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数,分别存放到S6,S7,S8,S9和S10单元中。

data segment

score db 76,69,84,90,73,88,99,63,100,80

s6 db 0

s7 db 0

s8 db 0

s9 db 0

s10 db 0

data ends

code segment

assume cs:code, ds:data

main proc

start:

mov ax,data

mov ds,ax

mov cx,10

call alloc

disp:

mov dl,s6

call display

mov dl,s7

call display

mov dl,s8

call display

mov dl,s9

call display

mov dl,s10

call display

mov ah,4ch

int 21h

main endp

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

display proc

add dl,30h;屏幕上显示的是ascii码,所以求出数字,然后转换成ascii码

mov ah,02h

int 21h

ret

display endp

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

alloc proc

xor si,si

comp:

cmp score[si],100 je is10

cmp score[si],90 jge is9

cmp score[si],80 jge is8

cmp score[si],70 jge is7

is6:

inc s6

Jmp l1

is7:

inc s7

Jmp l1

is8:

inc s8

Jmp l1

is9:

inc s9

Jmp l1

is10:

inc s10

Jmp l1

L1:

Inc si

Loop comp

ret

alloc endp

code ends

end start

5.11从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。

cseg segment

assume cs:cseg

start:

mov cx,0

jmp no

yes: inc cx

no:

mov ah,01h

int 21h

cmp al,'$'

jmp End1

cmp al,'0'

jb yes

cmp al,'9'

ja yes

jmp no

mov dl,cx

add dl,30h;屏幕上显示的是ascii码,所以求出数字,然后转换成ascii码

mov ah,02h

int 21h

End1:

mov ax,4c00h

int 21h

cseg ends

end start

实验三

找出MSG DB 13, 15, 7, 25, 24中的最小数

DSEG SEGMENT

MSG DB 13, 15, 7, 25, 24

M DB ?

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 4

MOV AL, MSG

MOV SI, OFFSET MSG+1

L1: CMP AL, [SI]

JB NEXT

MOV AL, [SI]

NEXT: inc si

LOOP L1

MOV M, AL

MOV AX, 4C00H

INT 21H

CSEG ENDS

END START

1.试编制一个汇编语言程序,求出首地址为DA TA的10个无符号字数组中的最小偶数,把它存放在AX中。(注意:无符号数)

dseg segment

data dw 0141H,0AE00H,07B4H,0A508H,0691H,0870H,7542H,0081H,0916H,0017H

dseg ends

cseg segment

assume ds:dseg,cs:cseg

start:

mov ax,dseg

mov ds,ax

mov cx,9

mov ax,data

mov si,offset data+2

L1:

test ax,01h

jnz L2

test word ptr [si],01h

jnz next

cmp ax,[si]

jb next

L2:

mov ax,[si]

next:

add si,2

Loop L1

mov ax,4c00h

int 21h

cseg ends

end start

实验四

1.有10个数,统计正数的个数,存放在变量M中。经过汇编后,形成.EXE文件,先用G=0

命令执行程序,用-D命令查看M单元的内容,会发现结果不正确。用单步执行命令T查找程序中的逻辑错误,注意每一次循环中AL寄存器中的值变化是否正确(AL寄存器中存放正数的个数)

DSEG SEGMENT

MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6

M DB ?

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 10

MOV AL, 0

LEA SI, MSG

L1: MOV BL, [SI]

CMP BL, 0

JlE NEXT

INC AL

NEXT: INC SI

LOOP L1

MOV M, AL

MOV AX, 4C00H

INT 21H

CSEG ENDS

END START

2.假设有一组数据:5,-4,0,3,100,-51请编一程序,判断:每个数大于0,等于0,还是小于0;并将最终结果存于以result为存储的字节单元中,(Result DB 6 dup(?))即: 1 当x>0

y= 0 当x=0

-1 当x<0

编程提示:

1、首先将原始数据装入起始地址为XX的字节存储单元中。

2、其中判断部分可采用CMP指令,得到一个分支结构,分别输出“y=0”, “y=1”, “y=-1”。将结果存入result的相应单元

3、程序中存在一个循环结构,循环6次,调用6次分支结构后结束。

dseg segment

msg db 5, -4, 0, 3, 100, -51

result db 6 dup(?)

dseg ends

cseg segment

assume cs:cseg, ds:dseg

start:

mov ax,dseg

mov ds,ax

mov cx,6

lea si,msg

lea di,result

l1:

mov bl,[si]

cmp bl,0

jl less

cmp bl,0

jg great

mov bl,0

mov [di],bl

jmp l2

less:

mov bl,-1

mov [di],bl

jmp l2

great:

mov bl,1

mov [di],bl

l2:

inc si

inc di

dec cx

cmp cx,0

jz done

jmp l1

done:

mov ah,4ch

int 21h

cseg ends

end start

实验五

将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元,如二进制数10010011转换成字符串为‘10010011’。要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8位和16位二进制数的转换。

测试数据:Var8bit byte 10010011B

Var16bit word 1010001111000100B

显示单元:Show8bit byte 8 dup (?)

Show16bit byte 16 dup (?)

data segment

Var8bit db 93h

Var16bit dw 0a3c4h

Show8bit db 8 dup (?)

Show16bit db 16 dup (?)

data ends

code segment

assume cs:code, ds:data

main proc

start:

mov ax,data

mov ds,ax

mov dl,Var8bit ;二进制数传给DX

mov cx,8 ;置位数8

lea si,Show8bit ;字符串首址si

call btrascii ;调用子程序

mov [si],byte ptr 0dh ;回车

mov [si+1],byte ptr 0ah ;换行

mov [si+2],byte ptr '$' ;结束符

lea dx,Show8bit

mov ah,9h ;打印字符串

int 21h

mov dx,Var16bit

mov cx,16

lea si,Show16bit

call btrascii

mov [si],byte ptr 0dh

mov [si+1],byte ptr 0ah

mov [si+2],byte ptr '$'

lea dx,Show16bit

mov ah,9h

int 21h

mov ah,4ch

int 21h

main endp

btrascii proc

cmp cx,8 ;看cx是否为8

jne l1

mov dh,dl ;将8位二进制数移到dx高8位

l1:

mov al,0

rol dx,1 ;dx左循环一次,将当前最高位给CF

rcl al,1 ;al带进位左循环一次,得到CF,即dx最高位add al,30h ;将此位数转换成ascii码

mov [si],al

inc si

loop l1 ;循环cx次

ret

btrascii endp

code ends

end start

实验六

将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元,如二进制数10010011转换成字符串为‘10010011’。要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8位和16位二进制数的转换。(用堆栈实现传参:可以选择用子过程来平衡堆栈,也可以用调用过程来实现平衡堆栈,程序功能说明中要指出)

测试数据:Var8bit byte 10010011B

Var16bit word 1010001111000100B

显示单元:Show8bit byte 8 dup (?)

Show16bit byte 16 dup (?)

data segment

Var8bit db 93h

Var16bit dw 0a3c4h

Show8bit db 8 dup (?)

Show16bit db 16 dup (?)

data ends

stack segment

dw 20 dup(?)

tos label word ;设置栈底,有无都可

stack ends

code segment

assume cs:code, ds:data, ss:stack

main proc

start:

mov ax,stack

mov ss,ax

mov sp,offset tos

mov ax,data

mov ds,ax

mov ax,offset Var8bit

push ax

mov ax,8 ;置位数8

push ax

mov ax,offset Show8bit ;字符串首址

push ax

call btrascii

lea dx,Show8bit

mov ah,9h

int 21h

mov ax,offset Var16bit

push ax

mov ax,16 ;置位数8

push ax

mov ax,offset Show16bit ;字符串首址

push ax

call btrascii

lea dx,Show16bit

mov ah,9h

int 21h

mov ah,4ch

int 21h

main endp

btrascii proc

push bp

mov bp,sp

push bx

push cx

push si

mov si,[bp+8] ;二进制数

mov bx,[si]

mov cx,[bp+6] ;位数

mov si,[bp+4] ;目标地址

cmp cx,8

jne label1

mov bh,bl

label1:

mov al,0

rol bx,1 ;bx左循环一次,将当前最高位给CF

rcl al,1 ;al带进位左循环一次,得到CF,即dx最高位add al,30h ;将此位数转换成ascii码

mov [si],al

inc si

loop label1 ;循环cx次

mov [si],byte ptr 0dh ;回车

mov [si+1],byte ptr 0ah ;换行

mov [si+2],byte ptr '$'

pop si

pop cx

pop bx

pop bp

ret

btrascii endp

code ends

end start

第三章 8086汇编语言程序格式

第三章8086汇编语言程序格式 练习题 3.4.1 单项选择题 1.下列选项中不能作为名字项的是()。 A.FH B.A3 C.3B D.FADC 2.下列指令不正确的是()。 A.MOV AL,123 B.MOV AL,123Q C.MOV AL,123D D.MOV AL,123H 3.下列指令不正确的是()。 A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A 4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=()。 A.0 B.1 C.2 D.3 5.若定义“A EQU 100”,执行“MOV AX,A”后,AX=()。 A.A的偏移地址B.A单元中的内容 C.100 D.A的段地址 6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。 A.10 B.20 C.22 D.24 7.若定义“C DD 2,4”,则该伪指令分配()个字节单元。 A.2 B.4 C.6 D.8 8、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。 A、DEBUG B、LINK C、MASM D、EDIT 9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件。 A..LST B..EXE C..MAP D..ASM 10.LINK命令执行后可以生成一个以()为扩展名的文件。 A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义()字节。 A.1M B.64K C.32K D.16K 12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。 A.BYTE B.WORD C.PARA D.PAGE 13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。 A.相同B.长C.短D.不定 14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。 A.相同B.快C.慢D.不定 15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。 A.源程序B.目标程序C.汇编程序D.连接程序

汇编语言程序代码详细版

1.1 DATAS SEGMENT x db 6 y db 7 z db ? ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT dw 100 dup(0);此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: push ds mov ax,0 push ax mov ax,datas mov ds,ax mov dl,x add dl,y mov cl,3 sal dl,cl sub dl,x sar dl,1 mov z , dl ;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS END START 1.2DATAS SEGMENT x db 4 dup (0) y db 4 dup (0)

z db 4 dup (0) ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT dw 100 dup(0);此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: mov x,12h mov [x+1],34h mov [x+2],56h mov [x+3],78h mov bl,78h mov y,34h mov [y+1],56h mov [y+2],87h mov [y+3],64h add bl,64h mov [z+3],bl mov bl,56h adc bl,87h mov [z+2],bl mov bl,34h adc bl,56h mov [z+1],bl mov bl,12h adc bl,34h mov z,bl

汇编语言循环程序实验报告

东北大学 计算机硬件技术基础实验报告 一、实验目的 (1) 加深对循环结构的理解; (2) 掌握循环程序的设计方法; (3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。 二、实验内容 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。 3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。 三、算法描述流程图 实验内容1、2、3的流程图分别为图1、图2、图3。

图 1 图 2 图3

四、实验步骤 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 1)输入源程序: DATA SEGMENT BUF DW 23,123,-12,-210,45,0,90,-453 BUF1 DW 8 DUP(0) BUF2 DW 8 DUP(0) A DW ? B DW ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA BX, BUF LEA SI, BUF1 LEA DI, BUF2 MOV A,0 MOV B,0 MOV CX,8 L0: MOV AX,[BX] CMP AX,0 JGE L1 MOV [DI],AX ADD DI,2 INC B JMP NEXT L1: MOV [SI],AX ADD SI,2 INC A NEXT: ADD BX,2 LOOP L0 MOV AH, 4CH INT 21H CODE ENDS END START 2)运行程序。

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

(完整word版)汇编语言常用指令大全,推荐文档

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

北理工数学实验作业

一. 1. 1/e 2. 3 3.1 4.e3 5. ∞ 6. 0 7.∞ 8.0 9.1/2 10.0 11.e2c12.不存在13. 1/12 Matlab实验过程: 1.1/exp(1) syms n; f=(1-1/n)^n; limit(f,n,inf) ans = 1/exp(1) 2.3 syms n; f=(n^3+3^n)^(1/n); limit(f,n,inf) ans = 3 3. 1 syms n; f=(1+sin(2*n))/(1-cos(4*n)); limit(f,n,pi/4) ans = 1 4.e^3 syms x; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) ans = exp(3) 5.inf syms x; f=(x^2)*exp(1/(x^2));

limit(f,x,0) ans = Inf 6.0 syms x; f=(x^2-2*x+1)/(x^3-x); limit(f,x,1) ans = 7.inf syms x; f=((2/pi)*atan(x))^x; limit(f,x,+inf) ans = Inf 8.0 syms x y; f=(1-cos(x^2+y^2))/((x^2+y^2)*exp(x^2+y^2)); limit(limit(f,x,0),y,0) ans = 9.1/2 syms x; f=(1-cos(x))/(x*sin(x)); limit(f,x,0) ans = 1/2 10.0 syms x;

f=atan(x)/(2*x); limit(f,x,inf) ans = 11.exp(2*c) syms c; f=sym('((x+c)/(x-c))^x'); limit(f,'x',inf) ans = exp(2*c) 12.极限不存在 syms x; f=cos(1/x); limit(f,x,0) ans = limit(cos(1/x), x = 0) 13.1/12 syms x; f=1/(x*log(x)^2)-1/(x-1)^2; limit(f,x,1) ans = 1/12 二.观察函数logbx,当b=1/2,1/3,1/4和b=2,3,4时函数的变化特点,总结logbx的图形特点。

汇编语言指令汇总

汇编语言程序设计资料简汇 通用寄存器 8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。专用寄存器 指令指针:IP(16位)。 标志寄存器:没有助记符(FLAGS 16位)。 段寄存器 段寄存器:CS、DS、ES、SS。 内存分段:80x86采用分段内存管理机制,主要包括下列几种类型的段: ?代码段:用来存放程序的指令序列。 ?数据段:用来存放程序的数据。 ?堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。 物理地址与逻辑地址 ?物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。 ?逻辑地址:或称分段地址。 ?段地址与偏移地址都是16位。 ?系统采用下列方法将逻辑地址自动转换为20位的物理地址: 物理地址= 段地址×16 + 偏移地址 ?每个内存单元具有唯一的物理地址,但可由不同的逻辑地址描述。 与数据有关的寻址方式 立即寻址方式 立即寻址方式所提供的操作数紧跟在操作码的后面,与操作码一起放在指令代码段中。立即数可以是8位数或16位数。如果是16位数,则低位字节存放在低地址中,高位字节存放在高地址中。 例:MOV AL,18 指令执行后,(AL)= 12H 寄存器寻址方式 在寄存器寻址方式中,操作数包含于CPU的内部寄存器之中。这种寻址方式大都用于寄存器之间的数据传输。 例3:MOV AX,BX 如指令执行前(AX)= 6789H,(BX)= 0000H;则指令执行后,(AX)= 0000H,(BX)保持不变。 直接寻址方式 直接寻址方式是操作数地址的16位偏移量直接包含在指令中,和指令操作码一起放在代码段,而操作数则在数据段中。操作数的地址是数据段寄存器DS中的内容左移4位后,加上指令给定的16位地址偏移量。直接寻址方式适合于处理单个数据变量。 寄存器间接寻址方式 在寄存器间接寻址方式中,操作数在存储器中。操作数的有效地址由变址寄存器SI、DI或基址寄存器BX、BP提供。 如果指令中指定的寄存器是BX、SI、DI,则用DS寄存器的内容作为段地址。 如指令中用BP寄存器,则操作数的段地址在SS中,即堆栈段。

教育统计学第二次作业

《教育统计学》第二次作业 一、判断正误,对的在前面的括号内画“√”,错的画“×” ( )1.2 χ检验适用于计数资料和百分资料。 ( )2.方差分析在综合检验多个平均数间差异的同时也检验了任意两个平均数间的差异。 ( )3.自由度越小,t 分布曲线的扩展程度越小。 ( )4.统计假设检验中,接受H 0,则说明H 0假设确实真。 ( )5. 从两个正态总体中随机抽取的两组观测值,它们的次数分布的形状是相同的。 ( )6. 概率是频率的极限。 ( )7. t 分布与标准正态分布一样,是一个以平均值0左右单峰对称分布。 ( )8.中位数检验法主要是使用2 χ统计量,检验两个独立样本组是否来自具有相同中位数的总体。 ( )9.事件的概率不仅由事件本身决定,而且与我们所用的计算方法有关。 ( )10.假如一个样本在总体中出现的机会很小,则完全有理由认为它们之间的差异是由偶然因素造成 的。 ( )11.非参数检验法不受总体分布形态和样本大小的限制。 ( )12.对于符号检验法,如果是大样本,则以二项分布原理为基础。 ( )13. Z 分布、t 分布、F 分布和2 χ分布都是对称分布。 ( )14.无论什么情况下,二项分布都近似正态分布。 ( )15.2 χ检验时,如果自由度为1,有一格理论次数小于5,则需要对2 χ值进行连续性校正。 ( )16.秩和检验法中,大样本是指两个样本的容量都大于30。 二、单项选择,将正确的选项填在题前的括号里 ( )1.从两个正态总体中分别随机抽取n =10,2n =8的样本, 方差分别为S =51,2 2S =43,当取α=0.05 时,下面哪种情况说明σσ ≤的原假设成立? A.F F 0.05(9,7) D. F

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2 格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O

INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

如何编写和汇编语言程序

如何编写和汇编语言程序 可以用普通文本编辑器编辑汇编语言源程序。常用的有 MS-DOS 下的 EDIT 文本编辑程序, Windows 下的写字板( WORDPAD.EXE )等。用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为· ASM 。 软件运行基本环境 运行汇编程序必备的软件环境: DOS 操作系统;汇编系统。 汇编系统盘应包含如下文件: MASM 宏汇编程序文件 LISK 连接程序文件 CRFF 索引程序文件(也可不用) 汇编源程序编写 1 )源程序的书写格式 当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤ 64KB ,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式: 逻辑堆栈段堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 · · 堆栈段名 ENDS 逻辑数据段数据段名 SEGMENT 用变量定义预置的数据空间 · · 数据段名 ENDS 逻辑代码段代码段名 SEGMENT ASSUME 定义各段寻址关系 过程名 PROC … 程序 · · 过程名 ENDP 代码段名 ENDS END 过程名或起始标号 在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接( LINK )时计算机将显示警告性的错误: Warning : N STACK segment There was 1 error detected. 在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。 其中: SEGMENT 、 ASSUME 、 PROC … ENDP 为伪指令,伪指令是发给汇编程序 ASM 的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉汇编程序。 2 )段寄存器的段地址的装入 Assume 伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。 ( 1 ) DS 、 ES 、 SS 的装入 由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。 MOV AX ,逻辑段名 MOV 段寄存器, AX

汇编语言——输入输出程序设计实验

实验四输入/输出实验(2学时综合性实验) 1.实验目的 (1) 掌握输入输出程序设计的概念和方法。 (2) 了解PC机外围芯片8259的功能。 (3)学习如何在PC机上编写具有输入输出功能的程序,包括8259芯片的使用方法。 2.实验说明 本实验要求自行编写一个显示器输出处理程序,它可以完成内存中保存的一串字符在屏幕显示, 因此本实验既属于输入输出实验,也属于中断实验。 3.实验内容 编写一个显示器输出处理中断程序(名为NEW09),实现DOS 21H中断的9号功能,在屏幕上输出内存缓冲区BUF中以”$”结束的一串字符串。要求:缓冲区的偏移地址采用DX寄存器进行传递。 4.实验准备 (1) 预习输入输出程序设计的特点和方法。 (2) 仔细阅读参考程序,弄清外围芯片接口初始化的意义和方法。 5.实验步骤 (1) 建立源文件,并通过汇编和连接,产生可执行文件。 (2) 运行程序,观察常规字符键及功能键按下时程序的反应, DATAS SEGMENT buf db'li hongbin','$';此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS

main proc far START: mov al,68h mov ah,35h int 21h push es push bx push ds mov bx,offset buf mov dx,offset new09 mov ax,seg new09 mov ds,ax MOV AX,DATAS MOV DS,AX pop ds pop bx pop es sti mov al,68h mov ah,25h int 21h main endp

汇编语言程序设计实验篇emu

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.docsj.com/doc/c92623652.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。 在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

汇编语言符号汇总

汇编语言符号和教材符号汇总 (8088/8086 IBM PC计算机) --学习笔记" "∶教材符号 +、-、*、/∶算术运算符。 &∶宏处理操作符。宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。 $∶地址计数器的值——记录正在被汇编程序翻译的语句地址。每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。 ?∶操作数。在数据定义语句中,操作数用?,其作用是分配并保留存储空间,但不存入确定的数据。 =∶等号伪指令——符号定义。对符号进行定义和赋值,功能与EQU相似,但允许(重复)再定义。 :∶修改属性运算符(操作符)——段操作符。用来临时给变量、标号或地址表达式指定一个段属性(不用缺省的段寄存器),自动生成一个“跨段前缀字节”。注意,段寄存器CS和ES不能被跨越,堆栈操作时也不能跨越SS。 ;∶注释符号。 %∶特殊宏操作符,用来将其后的表达式(通常是符号常数,不能是变量名和寄存器名)转换成它所代表的数值,并将此数值的ASCII码嵌入到宏扩展中。 ( )∶1.运算符——用来改变运算符的优先级别。2.教材符号,表示括号内存储单元(或寄存器)的内容。 < >∶宏调用时用来将带间隔符(如空格,逗号等)的字符串(作为实参)括起来。 ∶运算符。方括号括起来的数是数组变量的下标或地址表达式。带方括号的地址表[ ] 1. ② 达式必须遵循下列原则,①只有BX、BP、SI、DI这四个寄存器可在方括号内出现;BX 或BP可单独出现在各方括号中,也可以与常数、SI或DI一起出现在方括号内,但不 ③和DI可以单独出现在各方括号内,也可允许BX和BP出现在同一个方括号内;SI 以与常数、BP或BX一起出现在方括号内,但不允许SI和DI出现在同一个方括号内; ④一个方括号内包含多个寄存器时,它们只能作加法运算;⑤若方括号内包含基址指针BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用数据段寄存器DS提供段基址。2.教材符号,表示其中的内容可省略。

汇编语言程序设计实验

第2章汇编语言程序设计实验 2.1、实验1-1——多字节数的运算 1、实验目的计科1406 熟悉汇编语言的上机环境和各种工具(编辑、汇编、连接、调试);201416010608掌握完整段和简化段两种汇编程序的编写;李文俊 掌握简单汇编程序的处理和调试过程。 2、实验内容 ⑴、两个长度为3个字节(3B)的二进制无符号数,分别存放在首地址为buf1和buf2的连续内存单元中,编程求这两者之和,并将结果放在起始地址为res的内存单元中。例如,这两个数据为888888H、456789H,则其和应为[1]CDF011H。 要求: ?用完整段和简化段两种方式实现。 ?观察它们的反汇编结果并进行比较,单步运行程序。 注意: ?程序运行前先将res清0,程序运行后观察res单元中的数据是否符合预期。 ?数据存放应“高对高、低对低”。 ⑵、将两数改为3B的压缩BCD码,重复以上实验过程。例如,这两个数据为888888H、456789H,则其和应为[1]345677H(表示[1]345677)。 ?注意,每两个字节相加后,应紧接着进行二-十进制调整。 3、实验扩展和思考 ⑴、计算两个长度为3B的二进制数据之差应如何进行操作? ⑵、计算两个长度为3B的压缩BCD码数据之差应如何进行操作? ============================================================================ ==== 实验报告 ============================================================================

数学实验作业 韩明版

练习6.7 1.有两个煤厂A,B,每月进煤不少于60t,100t,它们担负供应三个居 民区的用煤任务,这三个居民区每月用煤量分别为45t,75t和45t.A 厂离这三个居民区的距离分别为10km,5km,6km,B厂离这三个居民区的距离分别为4km,8km,15km.问这两个煤厂如何分配供煤量能使总运输量(t.km)最小。 解:设甲对三个居民区的供煤量分别为:x1,x2,x3,乙对三个居民区的供煤量分别为x4,x5,x6.由已知有: y=10x1+5x2+6x3+4x4+8x5+15x6 -x1-x2-x3<=-60, -x4-x5-x6<=-100, x1+x4=45,x2+x5=75,x3+x6=40, X1>=0,x2>=0,x3>=0,x4>=0,x5>=0,x6>=0. 输入命令: > c=[10 5 6 4 8 15];A=[-1 -1 -1 0 0 0;0 0 0 -1 -1 -1;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0]; >> b=[-60;-100;0;0;0;0];Aeq=[1 0 0 1 0 0;0 1 0 0 1 0;0 0 1 0 0 1;0 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0]; >> beq=[45 75 40 0 0 0]; >> lb=ones(6,1); >> [x,fval]=linprog(c,A,b,Aeq,beq,lb) Optimization terminated.

结果为: x = 1.0000 20.0000 39.0000 44.0000 55.0000 1.0000 fval =975.0000 这说明甲乙两个煤厂分别对三个居民区输送1t 20t 39t,44t 55t 1t的煤才能使总运输量最小,且总运输量为975t.km 2.某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券及其信用等级、到期年限、税前收益如下表所示。按照规定,市政证券的收益可以免税,其他证券的收益需按40%的税率纳税。此外还有以下限制: (1)政府及待办机构的证券总共至少购进400万元; (2)所构证券的平均信用等级不超过1.4(信用等级数字越小,信用程度越高); (3)所构证券的平均到期年限不超过5年。

一些简单的汇编程序

1.编制程序计算S=1+2+3+4+……+N直到和大于500为止,并将结果在屏幕上显示出来(N的值和最终的和的值)。 DATA SEGMENT N DW? SUM DW? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,0 MOV BL,0 E1: INC BL ADD AX,BX CMP AX,500 JBE E1 MOV [N],BX MOV [SUM],AX E2: MOV AX,BX MOV BL,10 DIV BL ADD AL,30H MOV DL,AL MOV CL,AH MOV AH,2 INT 21H ADD CL,30H MOV DL,CL MOV AH,2 INT 21H MOV AH,2 MOV DL,0AH INT 21H MOV AX,SUM CWD MOV BX,100 DIV BX MOV CX,DX ADD AL,30H MOV DL,AL MOV AH,2 INT 21H MOV BL,10 MOV AX,CX DIV BL MOV CL,AH MOV AH,2 ADD AL,30H MOV DL,AL INT 21H MOV AH,2 ADD CL,30H MOV DL,CL INT 21H MOV AH,4CH INT 21H CODE ENDS END START 2.从键盘输入学生成绩(A、B、C、D),自动汇总并显示各类分数的人数。按下$键则停止输入;若按下A、B、C、D之外的键则提示“INPUT ERROR”信息。 DATA SEGMENT M1 DB'Please input A,B,C,D:',13,10,'$' M2 DB 13,10,'Input error! ',13,10,'$' M3 DB 13,10,'The number of A is: $' M4 DB 13,10,'The number of B is: $' M5 DB 13,10,'The number of C is: $' M6 DB 13,10,'The number of D is: $' DATA ENDS STACK SEGMENT

数学实验第二次作业

3. 问题: 小型火箭初始质量为1400kg,其中包括1080kg燃料,火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N的推力,火箭引擎在燃料用尽时关闭。设火箭上升时空气阻力正比速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度、速度、加速度及火箭到达最高点时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。 模型: 设速度为v,根据牛顿第二定律,可得微分方程 在0

相关文档
相关文档 最新文档