文档库 最新最全的文档下载
当前位置:文档库 › DA0832转换实验

DA0832转换实验

DA0832转换实验
DA0832转换实验

"传统模块" 实验二十七 D/A0832转换实验

; 把DA0832的片选CS13孔和Xfer孔接至译码器的YS3(0B000H-0BFFFH)孔

; A0832的WR1孔和WR2孔连控制总线区的/WR孔。

; 把第"40"号模块"键盘显示"的片选信号CS40孔接第"36"号模块"片选信号"YS0(08000-08FFFH)孔。

; 软件清单:KEIL例程\实验二十七\A51\EX27.ASM

OUTBIT equ 08002h ; 位控制口

OUTSEG equ 08004h ; 段控制口

IN equ 08001h ; 键盘读入口

LEDBuf equ 60h ; 显示缓冲

Num equ 70h ; 显示的数据

DelayT equ 75h ;

ORG 0000H

ljmp Start

ORG 0030H

LEDMAP: ; 八段管显示码

db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h

db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

Delay: ; 延时子程序

mov r7, #0

DelayLoop:

djnz r7, DelayLoop

djnz r6, DelayLoop

ret

DisplayLED:

mov r0, #LEDBuf

mov r1, #6 ; 共6个八段管

mov r2, #00100000b ; 从左边开始显示Loop:

mov dptr, #OUTBIT

mov a, #0

movx @dptr, a ; 关所有八段管

mov a, @r0

mov dptr, #OUTSEG

movx @dptr,a

mov dptr, #OUTBIT

mov a, r2

movx @dptr, a ; 显示一位八段管

mov r6, #01

call Delay

mov a, r2 ; 显示下一位

rr a

mov r2, a

inc r0

djnz r1, Loop

mov dptr, #OUTBIT

mov a, #0

movx @dptr, a ; 关所有八段管

ret

Start:

mov sp, #40h

mov LEDBuf+0, #3fh ; 显示 0832xx

mov LEDBuf+1, #7fh

mov LEDBuf+2, #4fh

mov LEDBuf+3, #5bh

mov r5,#00h

loop2: call loop3 ;0832DA 从小到大转换

mov DelayT ,#30h

MLoop:

call DisplayLED ;

djnz DelayT,mloop

inc r5

cjne r5,#0ffh,loop2

loop4: dec r5

call loop3

mov DelayT ,#30h

MLoop0:

call DisplayLED ;

djnz DelayT,mloop0

cjne r5,#00h,loop4

sjmp loop2

loop3: mov dptr,#0B000h ; 0832DA 从大到小转换

mov a,r5

movx @dptr,a

anl a,#0fh

mov dptr, #LEDMap

movc a, @a+dptr

mov LEDBuf+5,a ;拆字后送显示缓冲区

mov a,r5

swap a

anl a,#0fh

mov dptr, #LEDMap

movc a, @a+dptr

mov LEDBuf+4,a

ret

end

计算机组成原理实验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】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言实验

汇编语言程序设计 实验一DEBUG 程序使用技巧 学号:姓名: 1.寄存器和内存 开始Debug 程序。输入“Q ” 退出程序。再次启动Debug。 输入“r ”来显示CPU的当前状态和寄存器中的当前内容。 输入“r AX ”和“1234”,_______寄存器中的内容变为1234。 输入“r DS ”和“2000”,_______寄存器中的内容变为2000。 输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里: 输入“f DS:1000 1100 77 ”再显示一次这80H 字节。判断这条指令的作用是什么? 再输入“d 2000:1000 ”来显示数据段中80H 字节数据。观察与前面的数据有无不同。 输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。比较其中2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点 退出Debug,再重新启动Debug。 输入“r ”观察CPU 的状态,下一条指令是什么? 使用两种方式输入一段程序,第一种方式:直接输入机器码。 输入“u ”来显示程序段中的指令序列。然后输入“d CS:100 ” 来显示代码段中的数据。观察显示内容。 “u CS:100 106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来: 使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP 寄存器中的值是100H。一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。

汇编语言实验

实验一 DEBUG命令实验 一.实验目的: 掌握DEBUG 的基本命令及其功能 二.实验内容: DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1、DEBUG的主要命令 (1)汇编命令A,格式为:-A[地址]; 该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。 例如: -a 136B:0100 mov ax,100 136B:0103 mov bx,200 136B:0106 mov cx,300 136B:0109 mov dx,400 136B:010C - (2)反汇编命令U,有两种格式: 1)-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 例如: -u

2)-U范围 该命令对指定范围的内存单元进行反汇编, 例如: (3)运行命令G,格式为: -G [=地址1][地址2[地址3。。。]] 其中地址1规定了运行起始地址,后面的若干地址均为断点地址。 例如: (4)追踪命令T,有两种格式: 1)逐条指令追踪:-T[=地址];该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:-T[=地址][值],该命令从指定地址起执行n条命令后停下来,n由[值]确定。 (5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围] (6)修改内存单元内容的命令E,它有两种格式: 1)用给定的内容代替指定范围的单元内容:-E地址内容表 例如:-E 2000:0100 F3 “XYZ” 8D

汇编语言上机实验十2015李中

实验十输入/输出与中断实验 一、实验目的 1.掌握输入/输出与中断指令的使用方法; 2.掌握中断向量表的结构及使用方法; 3.掌握INT 指令的使用方法; 4.掌握BIOS 中断功能调用的使用方法; 5.掌握DOS 功能调用的使用方法。 二、实验要求 1.了解INT 指令与CALL 指令的不同点; 2.会用DEBUG 观察中断向量表; 3.会用DEBUG 的T 和P 命令执行INT 指令; 4.会用INT 10H、INT 16H 编制程序; 5.会用DOS 功能调用的02H、09H 功能编制程序 三、实验题目 1. 编制程序。利用IBM PC BIOS 功能调用的INT 16H 功能,编制一个从键盘上接收若干个字符串的程序。 2.编制程序。利用IBM PC BIOS 功能调用的INT 10H 功能,编制一个在屏幕上指定位置显示若干个字符串的程序。 四、实验思路 1调用INT16号功能实现输入字符,并且用int10号功能实现显示字符,并且将字符保存到data开始的内存单元中,如果不是ctrl+c的话循环输入输出,是的话结束程序.

2用INT10中03功能读出当前光标位置,然后保存当前的光标位置,只有用INT10中的02号功能设置要显示字符的位置,调用INT10的0E号功能循环显示字符,遇到结尾符号0的时候结束输出,然后恢复光标位置,调用INT10的1号功能恢复光标类型,用INT10的2号功能设置光标位置,使光标位置回到起点,结束程序. PUSH DX;保存当前光标位置 PUSH CX;保存光标类型 MOV DX,1020H;设置光标位置 MOV AH,02H INT 10H;设置光标位置 五、实验程序 1 DSEG SEGMENT;数据段开始 DATA DB 80 DUP (0);存储数据的单元 DSEG ENDS ;数据段结束 CSEG SEGMENT;代码段开始 ASSUME CS:CSEG,DS:DSEG;段假设 START: MOV AX,DSEG MOV DS,AX;段地址初始化

汇编语言实验整理

1.设计程序。实现Y=2X+3,X是一位十进制数。要求X从键盘输入,在下一行 显示“Y=2X+3=”以及十进制计算结果。 data segment\x db?\y dw?\mess1db0ah,0dh,'input x:$'\mess2db 0ah,0dh,'Y=2X+3=$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let3:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\cmp al,'0'\jb out1\ cmp al,'9'\ja out1\and al,0fh\mov bl,2\mul bl\add ax,3\mov y,ax\mov cx,0\mov bx,10\let0:\mov dx,0\inc cx\idiv bx\push dx\cmp ax,0\jne let0\mov dx,offset mess2\mov ah,9\int 21h\let1:\pop ax\add ax,0030h\mov dl,al\mov ah,2\int21h\ dec cx\cmp cx,0\jnz let1\jmp let3\out1:\mov ah,4ch\int21h\ code ends\end start 2.编写程序,将键盘输入的小写字母变为大写字母显示在屏幕上,输入小写字 母以外的其它字符则退出。 data segment\mess1db0ah,0dh,'xiaoxieinput:$'\mess2db 0ah,0dh,'daxieoutput:$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let2:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\cmp al,'a'\jb out1\ cmp al,'z'\ja out1\mov bl,al\mov dx,offset mess2\mov ah,9\int 21h\let0:\sub bl,20h\mov dl,bl\mov ah,2\int21h\jmp let2\out1:\mov ah,4ch\int21h\code ends\end start 3.设计程序。实现Z=X/4+16*Y,X和Y都是一位十进制数。要求从键盘输入, 在下一行显示“Z=X/4+16*Y”以及十进制计算结果。 data segment\mess1db0ah,0dh,'input x:$'\mess2db0ah,0dh,'input y:$'\ mess3db0ah,0dh,'z=x/4+16*y=$'\data ends\code segment\assume cs:code,ds:data\start:\mov ax,data\mov ds,ax\let0:\mov dx,offset mess1\mov ah,9\int21h\mov ah,1\int21h\mov cl,2\sub al,30h\ mov ah,0\sar ax,cl\mov bl,al\mov dx,offset mess2\mov ah,9\int 21h\mov ah,1\int21h\sub al,30h\mov ah,0\mov cl,4\sal ax,cl\ add al,bl\mov bx,ax\mov dx,offset mess3\mov ah,9\int21h\let1:\ mov ax,bx\mov cx,0\mov bx,10\let2:\mov dx,0\inc cx\idiv bx\ push dx\cmp ax,0\jne let2\let3:\pop ax\add ax,0030h\mov dl,al\ mov ah,2\int21h\dec cx\cmp cx,0\jne let3\mov ah,4ch\int

汇编语言实验

循环与分支程序设计 实验目的 ⒈进一步熟悉掌握上机操作。 ⒉练习循环分支程序的编写方法。 3.掌握利用DEBUG修改参数、检查结果的方法。 实验内容: 1.设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数存放到s5、s6、s7、s8、s9及s10单元中。datarea segment grade dw 56,69,84,82,73,88,99,63,100,80 s5 dw 0 s6 dw 0 s7 dw 0 s8 dw 0 s9 dw 0 10 dw 0 datarea ends main proc far assume cs:prognam, ds:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov s5, 0 mov s6, 0 mov s7, 0 mov s8, 0 mov s9, 0 mov s10, 0 mov cx, 10 mov bx, offset grade compare: mov ax, [bx] cmp ax, 60 cmp ax, 70 cmp ax, 80 cmp ax, 90 cmp ax, 100 jmp short change-addr nine: inc s9 jmp short change-addr

eight: inc s8 jmp short change-addr seven: inc s7 jmp short change-addr six: inc s6 jmp short change-addr five: inc s5 change-addr: add bx, 2 loop compare ret main endp end start

汇编语言程序的设计实验篇(emu8086)

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和存单元的容。 1.1.1创建程序 https://www.wendangku.net/doc/83640149.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”部分可以分别输入相应的变量定义和指令。

实验一 汇编语言程序设计1

实验一汇编语言程序设计(1)一、实验目的 1.熟悉Pentium微处理器指令系统和寻址方式 2.掌握汇编语言程序的编程与调试方法 二、实验内容 1. 编程在显示器上输出显示HELLO TITLE 'HELLO.EXE---PRINT HELLO ON SCREEN' CR EQU 0DH LF EQU 00H DSEG SEGMENT 'DA TA' MESSAGE DB CR, 'HELLO!', CR, LF, '$' DSEG ENDS CSEG SEGMENT PUBLIC 'CODE' ASSUME CS:CSEG,DS:DSEG PRINT PROC FAR PUSH DS SUB A X,AX PUSH AX MOV AX, DSEG MOV DS, AX MOV DX, OFFSET MESSAGE MOV AH, 09h INT 21H RET PRINT ENDP CSEG ENDS

2. 在DATA1处建立10个字节,各数加1后移到DATA2处。DA TA SEGMENT DATA1 DB 0H,01H,02H,03H,04H,05H,06H,07H,08H,09H DATA2 DB 10 DUP (00H) DA TA ENDS CODE SEGMENT START: MOV AX , DATA MOV DS , AX MOV CX,10 LEA SI, DA TA1 LEA DI, DATA2 NEXT: MOV AL,[SI] INC AL MOV [DI],AL INC SI INC DI LOOP NEXT MOV AH.4CH INT 21H CODE ENDS END START

汇编语言实验报告

实验二:汇编语言 一、实验代码及结果: 3.2 若1KB的数据存放在TABLE以下,试编程序将该数据块搬到NEXT为首地址的内存区域中。 代码: DATA SEGMENT: TABLE DB 10 DUP (32H) NEXT DB 10 DUP (89H) COUNT DB 10H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS,AX MOV SI,OFFSET TABLE MOV DI,OFFSET NEXT AGAIN: MOV AX,[SI] MOV [DI],AX INC SI INC DI DEC COUNT LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START 结果:

3.3试编写10个字(16位2进制数)之和的程序。 代码: DATA SEGMENT ADD1 DB 1H ADD2 DB 2H,3H,4H,5H,6H,7H,8H,9H,0AH SUM DB (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS,AX MOV SI,OFFSET ADD1 MOV DI,OFFSET ADD2 MOV BX,OFFSET SUM MOV CX,9H MOV AL,[SI] MOV AH,0H PLUS1:ADC AL,[DI] INC DI LOOP PLUS1

MOV BX,AX MOV AH,4CH INT 21H CODE ENDS END START 结果:

《汇编语言》实验指导书

《汇编语言》实验指导书

目录 实验一Debug命令的使用 (3) 实验二基本汇编指令的使用 (7) 实验三汇编语言程序的调试与运行 (10) 实验四系统功能调用程序的调试与运行 (15) 实验五分支程序设计 (17) 实验六循环程序设计 (20) 实验七子程序设计 (23) 实验八高级汇编语言程序设计 (25) 实验九I/O程序设计 (30) 实验十中断程序设计 (33) 实验十一综合程序设计 (38)

实验一Debug命令的使用 一、知识点 1、DEBUG简介 DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。在汇编语言程序调试中很常用。 DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。 DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。 DEBUG命令的使用注意问题: (1)字母不分大小写 (2)只使用十六进制数,但没有带后缀字母“H” (3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。 (4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。 2、Debug的调入和退出 以WIN2000环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态: C:\Documents and Settings\lfy> 然后输入命令: >Debug 进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。 退出Debug的命令:Q 3、Debug常用命令 (1)汇编命令A,格式为: - A [地址] 功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。若不指定地址,则系统从默认的地址开始存放。按回车键退出汇编状态 应用:用于调试一条指令或几条指令组成的一个程序段。 (2)显示和修改寄存器命令R,格式为: - R [寄存器名] 功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。若未指定寄存器,则默认为显示所有寄存器的内容。 应用:常用于通过寄存器的值查看指令的执行结果。 (3)内存单元内容的命令E,格式为: - E 地址[内容表] 功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。例如:

汇编实验10

暨南大学本科实验报告专用纸 课程名称汇编语言程序设计成绩评定 实验项目名称字符串程序设计指导教师 一、实验目的和要求 实验目的 1)掌握串操作指令的使用方法。 2)掌握串处理程序的设计方法。 3)熟练使用各种程序结构。 实验内容 1)编写程序把从键盘输入的以回车为结束符的字符串中的空格去掉并按相反的顺序输出。 2)编写程序在字符串STRING1中指定位置插入字符串STRING2。 3)编写程序在字符串STRING1中指定位置删除子串。 4)输入一个字符串(以回车符作为结束),将其排序后输出到屏幕上。

二、程序流程图(每题分开写)

三、源程序(每题分开写) DSEG SEGMENT 'DATA' buffer db 50 db 0 db 50 dup('$') STRING db 'Please enter the string.',0dh,0ah,'$' DSEG ENDS SSEG SEGMENT STACK 'STACK' db 256 DUP(0) SSEG ENDS CSEG SEGMENT 'CODE' START PROC FAR ; set segment registers: MOV AX, DSEG MOV DS, AX MOV ES, AX mov ah,09h mov dx,offset STRING int 21h mov ah,0ah mov dx,offset buffer int 21h mov si,offset buffer+2 mov cx,0 outlp: cmp byte ptr [si],0dh jz done cmp byte ptr [si],' ' jnz next mov di,si inlp: inc di mov al,[di] mov [di-1],al cmp byte ptr [di],0dh jnz inlp jmp outlp next:

汇编语言实验

一、实验项目名称 汇编语言程序上机过程 二、实验目的 熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。 三、实验基本原理 1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用; 2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP; 3.利用的INT 21H的1号功能实现键盘输入的方法; 四、主要仪器设备及耗材 PC微机 DOS操作系统或 Windows 操作系统 MASM.EXE,LINK.EXE,https://www.wendangku.net/doc/83640149.html,或宏汇编集成环境 五、实验步骤 1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。 2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。 3.用TYPE命令显示1产生的.LST文件。 4.用LINK将.OBJ文件连接成可执行的.EXE文件。 5.在DOS状态下运行LINK产生的.EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。 实验源程序: data segment message db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data ends stack segment para stack 'stack' db 50 dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov dx,offset message mov ah,9 int 21h again: mov ah,1 int 21h

汇编语言实验答案 (王爽)

汇编语言答案 检测点1.1(第8页) (1)13 (2)1024,0,1023 (3)8192,1024 (4)2^30,2^20,2^10 (5)64,1,16,4 (6)1,1,2,2,4 (7)512,256 (8)二进制 注意: 1.第4题中的符号'^'指求幂运算(如:2^30指2的30次方) 检测点2.1(第18页) ---------------------- (1)写出每条汇编指令执行后相关寄存器中的值。 第一空:F4A3H 第二空:31A3H 第三空:3123H 第四空:6246H 第五空:826CH 第六空:6246H 第七空:826CH 第八空:04D8H 第九空:0482H 第十空:6C82H 第十一空:D882H 第十二空:D888H 第十三空:D810H 第十四空:6246H (2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解答如下: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2(第23页) ---------------------- (1)00010H,1000FH (2)1001H,2000H 第2题说明: 因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 检测点2.3(第33页) 答:CPU修改了4次IP的值。

第1次:执行完mov ax,bx后 第2次:执行完sub ax,ax后 第3次:读入jmp ax后 第4次:执行完jmp ax后 最后IP的值为0 实验1查看CPU和内存,用机器指令和汇编指令编程(第33页) ----------------------------------------------------- 1.预备知识:Debug的使用 <此部分略> 2.实验任务(第43页) (1) <此部分略> (2) <此部分略> (3) 通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 检测点3.1(第52页)- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T 命令进行逐步执行,以查看相应结果。 (2) 1.指令序列如下: mov ax,6622h jmp0ff0:0100 mov ax,2000h

【9A文】汇编语言实验

汇编语言程序设计 实验一DEBUG程序使用技巧 学号:姓名: 1.寄存器和内存 开始Debug程序。输入“Q ”退出程序。再次启动Debug。 输入“r ”来显示CPU的当前状态和寄存器中的当前内容。 输入“r AX ”和“1234”,_______寄存器中的内容变为1234。 输入“r DS ”和“20KK”,_______寄存器中的内容变为20KK。 输入“dDS:1000 ”来显示数据段中80H字节数据,把数据抄在这里: 输入“f DS:1000110077 ”再显示一次这80H字节。判断这条指令的作用是什么? 再输入“d20KK:1000 ”来显示数据段中80H字节数据。观察与前面的数据有无不同。 输入“d1900:0100 ”和“d1ff0:0100 ”来显示两个存储段中的内容。比较其中20KK:0000段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点 退出Debug,再重新启动Debug。 输入“r ”观察CPU的状态,下一条指令是什么? 使用两种方式输入一段程序,第一种方式:直接输入机器码。 输入“u ”来显示程序段中的指令序列。然后输入“d CS:100 ”来显示代码段中的数据。观察显示内容。 “u CS:100106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来: 使用输入“r ”观察CPU的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP寄存器中的值是100H。一直监视AX和IP寄存器的内容变化,尤其是标志位的变化。 第二种方式,是输入汇编语句。重启Debug程序。 先输入“a CS:100 ”,然后输入: MOV AX,FF00 ADDAX,01F0 MOVBX,AX NEGBX ADDAX,BX 输入“u CS:10010A ”就可以得到这几条语句的机器码。把机器码记录下来: 使用命令“r ip ”再输入“100 ”,可以将寄存器IP中的内容置为“100H”。再输入“r ”观察CPU 的状态,然后反复输入“t ”跟踪程序,直到程序结束。解释为什么标志位内容会有改变?另外,说明这段程序完成什么任务? 重新把寄存器IP的内容变为100H,不使用跟踪命令“t”,改用“g10c”来完成程序。 程序中还可以加断点,做法是在程序中加入“int3”这条指令。如果这条指令在程序的末尾,我们可以通过输入“g ”来完成运行程序。这样就不需像上面需要告诉Debug程序最后机器码字节的地址偏移量了。“int3”是Debug中很有效的返回控制指令。把这条指令放在程序中必要的位置上,在这条指令后面的代码在不允许时就不会运行。

汇编语言程序设计实验

目录 目录 (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执行,观察执行结果。 (设置存储器的值)

汇编语言实验心得

汇编语言实验心得 0 当x=0 -1 当x<05、循环程序设计1)定义10个字节型带符号数,求其和。2)在内存单元DATA中定义一个16位数,统计其16位中1的个数,存入内存的字单元COUNT。3)定义10个字型无符号数,编写程序求其最小值。6、子程序设计1)设计一个子程序,计算1+2+…+N,其中N为给定的正整数,且N小于100。2)定义10个字型带符号数,编写子程序求其最大值和统计正数的个数。3)从键盘接收4位进制数,将其转换为六进制数并显示。二、实验心得上学期学习计算机组成原理的时候就对汇编有所了解,但通过这学期的学习,使我更加深入了解了其知识体系和计算机组成及内部程序执行的原理。对于各命令的熟练掌握后,自己亲自动手实验更是体会到了各命令的用途及执行的方法。通过各个基本命令可以轻松更改计算机内部寄存器的值和读写内存,磁盘,I/O端口的值,通过更改观察其对计算机的影响变化。 对于汇编语言的寻址方式,更是多种多样,通过对各寻址方式的比较,可以感受到各寻址方式的不足与好处,还有是对各寻址方式的注意事项,有的寻址方式需专用的寄存器,有的寄存器是禁止使用的,然而有的就开放的多,对寄存器没有特殊要求,然而在编程过程中使用较为合适的寻址方式是提高程序运行效率的保障,在对寄存器中的值做运算时要正确书写各值,在X86中只支持六进制数,在运算结束后值得保存也是很重要的,不能随

意保存。写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数。 在学习完汇编语言程序格式和结构后就可以完整的编写汇编语言程序了,在编程中各种结构的选择是对程序效率的保障,在顺序结构中就不需要各种选择分支结构,顺序结构适合一些较简单按顺序执行的程序,然而复杂程序的编写就需要用到选择结构和分支结构了。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。 现在课程已结束一段时间,虽然不是完全掌握,但是还是了解了一些基本操作,可以解决一些基本问题,想要学好汇编,还需花更多时间去学习。在今后的学习过程中尽可能完善自己。

汇编语言实验指导更完整

目录 (1)利用DEBUG调试汇编语言程序段 (1) (2)初级程序的编写与调试实验(一) (7) (3)初级程序的编写与调试实验(二) (18) (4)汇编语言程序上机过程 (24) (5)分支程序实验 (28) (6)循环程序实验 (33) (7)子程序实验 (37)

(1)利用DEBUG调试汇编语言程序段 一、实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二、实验内容 1.进入和退出DEBUG程序; 2.学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U 命令、N命令、W命令等,也应该试用一下; 3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。 三、实验环境 PC微机 DOS操作系统或Windows 操作系统 MASM.EXE,LINK.EXE,https://www.wendangku.net/doc/83640149.html,或宏汇编集成环境 四、实验要求 1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子; 2.作为例子,准备用A命令,输入在显示器上显示字符“$”的系统调用程序段; 3.编写将AX左移9位的程序段。 五、主要实验步骤 (一)学会使用DEBUG中的简单命令: 1.打开DOS,开始——运行——cmd。 2.进入DEBUG,在DOS下输入DEBUG,直接进入。 3.在DEBUG中输入D,查看D命令结果,输入D 1000,查看指定地址的数据。 4.在DEBUG中输入E100,修改地址100的数据,再输入D100,查看修改后的结果。 5.在DEBUG中输入R,查看当前寄存器的内容。 6.在DEBUG中输入A,输入以下代码: mov ax,1234 mov [1000],ax 输入T显示第一条命令运行结果,再次输入T,显示第二条命令运行结果,输入d1000, 验证命令运行结果。 7.在DEBUG中输入A,输入以下代码: mov ax,1234 mov [1000],ax 输入G [=起始地址] [结束地址]↓,再输入D1000,验证命令运行结果。 8.在DEBUG中输入U [起始地址] [结束地址],从[起始地址]开始进行反汇编。 9.在DEBUG中输入Q,推出DEBUG程序。

汇编语言实验讲义

汇编语言实验讲义 计算机学院 2002,5 实验一数据的输入输出 1.实验目的: (1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE命令包含文件的方法。 2.实验步骤: (1)用编辑软件EDIT编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM或TASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK或TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)运行可执行文件。观察执行结果,以验证其正确性。 3.从键盘上输入两个十进制数正数(<32767),相加并显示结果。 参考程序: STACK SEGMENT STACK ‘STACK’ DB 100 DUP(?) TOP DW ? STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START: MOV AX,STACK MOV SS,AX MOV SP,0FFSET TOP CALL D_BP ;从键盘接受一个十进制数 MOV AX,BX CALL D_BP ;从键盘接受一个十进制数 ADD AX,BX CALL B_DP ;显示结果 MOV AH,4CH ;返回DOS INT 21H INCLUDE BIN_DEC.ASM INCLUDE DEC_BIN.ASM CODE ENDS END START

4. 改写程序为输入两个十进制数,相减并显示输出。 5.改写程序为输入两个十进制数,相乘并显示输出。 6.改写程序为输入两个十进制数,相除并显示输出。 (注:D_BP:十进制—>二进制转换过程,出口参数BX=二进制数;B_DP:二进制—>十进制转换过程,入口参数AX=二进制数) 实验二BCD—>ASCII 1.实验目的: (1)进一步熟悉汇编语言的汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、掌握BCD—>ASCII及字符输出的方法。 2.实验步骤:(同前) 3.实验参考程序: NAME BCD TO ASCII DATA SEGMENT BCDBUF DB 12H,34H,56H,78H,90H,98H,76H,54H,32H,10H COUNT EQU $-BCDBUF ASCBUF DB 20 DUP(?) DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ SPACE DB 100 DUP(?) TOP DW ? STACK ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,ES:DATA,SS:STACK MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV SI,OFFSET BCDBUF MOV DI,OFFSET ASCBUF MOV CX,COUNT CLD TRANT: LODSB MOV BL,AL

微机原理与汇编语言_实验10_ADC0809实验

微机原理与汇编语言 实验报告 姓名x x x学号xxxxxx 专业班级计科x班 课程名称微机原理与汇编语言实验日期 实验名称ADC0809实验成绩 一、实验目的 熟悉A/D转换的基本原理,掌握ADC0809的使用方法。 二、实验内容 1、实验原理 从ADIN0输入一路模拟信号,启动A/D转换,用简单输入口(74LS244)查询EOC信号,转换结束后查看转换结果。同时用万用表测量输入的模拟电压,与转换后的数字量比较。作图,横坐标是模拟电压,纵坐标是转换的数字量,检查A/D转换的线性度。 其它通道实验与通道0类似,相应修改地址即可。 2、实验步骤 1)实验连线 AN0 ? ADIN0 CS0 ?CS0809 CS1 ?CS244 EOC ?IN0 2)用实验箱左上角的“VERF.ADJ”电位器调节ADC0809 12脚上的参考电压至5V。 3)编写程序并全速运行。 4)检查显示数据是否与电位器输出的电压相符合。 3、实验结果 在输入电压AN0分别为0V,1V,2V,3V,4V,5V时显示数据分别为00H,33H,66H,99H,0CCH,0FFH(数据低位略有偏差属正常现象)。 4、框图与源码 开始 启动通道0 转换结束? 读取转换结果 con8279 e qu 0492h dat8279 equ 0490h assume cs:code code segment public org 100h start: jmp start1 segcod db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h start1: mov dx,04a0h mov ax,34h out dx,ax ;启动通道0 wait1: mov dx,04b0h ;CS244

相关文档