ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:97.50KB ,
资源ID:17005328      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17005328.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机输入输出课程汇编实验部分文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机输入输出课程汇编实验部分文档格式.docx

1、 mov cl, buff + 1h next: cmp cl, 0h je finish mov dl, byte ptr si mov ah, 2h dec cl inc si jmp nextfinish: mov ah, 4chcode ends end start2)运行结果贴图3)编程与调试心得(遇到的问题和解决的办法,以及获得的收获)一开始写buff byte 255 显示error,换成buff db 255可以运行 Crlf db 0ah, 0dh, 关键在于获取字符串的长度,会存储在buff+1h中也可在末尾加$表示结尾。实验二 通过这一部分的实验,进一步熟悉汇编过程和DE

2、BUG调试过程;掌握用汇编语言编写顺序程序。2. 写完整程序16位程序,在内存中从Table开始的10个单元中连续存放0到9的平方值,任给一个0到9的数X,该数存放在内存单元XX中,用XLAT指令查表求X的平方值,并将结果存于内存YY单元中。编写程序,并在DEBUG中进行调试和验证结果。(X,XX,YY都是内存中的变量).8086.MODEL SMALL.STACK.DATA TABLE db 0,1,4,9,16,25,36,49,64,81RESULT DB ?.CODESTART:MOV AX,DATA MOV DS,AX MOV BX,offset TABLE MOV AH,01H I

3、NT 21H SUB AL,30H XLAT MOV RESULT,AL lea dx, crlf ;输出回车换行 MOV DL,RESULT MOV AH,02HEXIT:MOV AH,4CH运行debug,-u反汇编-g至001E,输入值6,查表应为36,即24H(00100100)查ASCII为$,图0076A:0030位置即为result值(通过对比一开始的存储单元得出)一开始没有注意到输入的AL是ASCII码,应当减去30H数据存储在result中可以用-d查询,学会了使用反汇编和查询存储单元通过输出是ASCII码,如9对应result的81,即51H,查表恰为Q说明存储正确(可用除

4、10或循环移位的方法,单个数转为十进制数输出)实验三 通过本实验,熟练使用字符串的输入、读取与判断,通过实验,可以掌握循环结构的各种实现方法,进一步了解循环结构中初始化部分、循环体部分、循环控制部分的功能以及他们彼此之间的关系。尤其是多重循环中外层循环和内层循环之间的关系。所谓回文字符串是指一个字符串正读和倒读都是一样的,例如字符串ABCDEFFEDCBA就是一个回文字符串,而字符串ABCFDDCAB就不是回文字符串。现在编写完整的16位汇编程序,输入一个字符串,判断该字符串是否为回文字符串,并用“It is a palindrome”或“It is NOT a palindrome”作为输出

5、。buff db 255 db ? db 255 dup (?Y DB It is a palindrome$N DB It is NOT a palindrome$ mov ax, data mov ds, ax mov bl, buff + 1h mov bh,0h mov di,2h add di,bx mov si, 1h dec bl dec bl dec di cmp bl, 0h mov dl,buffsi mov dl,buffdi int 21h mov dl, mov al,buffsi mov cl,buffdi cmp cl,al jne no no: mov dx,o

6、ffset N mov ah,09h mov dx,offset Y INT 21H 本程序存在bug,如上图当输入abvcba时可以将abvcab与abcvba逐个字对比,发现第三个字符不同转入no段提示“It is NOT a palindrome”,而当输入确实为回文时首字母错误,原因实在是查不出来。实验四实验目的熟悉如何在数组中进行查找,并返回是否成功的信息,通过实验,可以掌握循环结构的各种实现方法,进一步了解循环结构中初始化部分、循环体部分、循环控制部分的功能以及他们彼此之间的关系。实验内容2 请编写16位完整汇编程序,在一个升序字节数组BUFF中查找数N,找到后将此数从数组中删除,

7、并使得CF=0;没找到返回CF1。.model small.databuff db abcdefghijklmn,$N db n.code mov dx,data mov ds,dx mov al,N mov,ah, lea di,bufffinding:inc di cmp al,di jz yes cmp ah,di;检测是否读完buff jz no jmp findingyes:add ah,0 mov si,disetarray: jz exit mov cl,si mov di,cl inc di jmp setarraymov ah,0 cmp ah,1;设置cfexit:mov

8、ah,4chend startNC说明CF=0,查找到数N,查看存储单元由,n变为abcdefghijklm,$,n已将数组中的数n删去 运用反汇编-u得到每个指令的地址,利用-g 断点地址 快速让程序运行到特定指令位置,可以方便快捷地排查错误 进位标志CF(Carry flag) CY(1) NC(0)实验五通过本实验,掌握子程序的定义和调用方法。通过程序调试,进一步理解CALL指令和RET指令的功能,掌握子程序调用时参数传递的方法。请编写完整16位汇编程序从键盘读取字符,如果是十进制的09则在屏幕上输出该数的8位二进制码,并将数字依次存放到BUF开头的数组中,如果读入的字符是Q或者q,则程

9、序退出,其他情况在屏幕上打印“You must input 09, or q or Q”。(如输入的字符是9,则输出“00001001”).提示:输出一个数的2进制形式应该从最高位开始输出。要求打印一个数的2进制形式和输出回车换行分别定义成一个子程序可以将此段程序定义成一个过程。.stackSTR db you must input 09 or q,QLFCR PROC PUSH AX MOV AH,02 MOV DL,0AH POP AX RETLFCR ENDPPRINT PROC JL T CMP AL,9 JG T MOV CX,8LP:MOV DL,0 SHL AL,1 ADC DL

10、,30H LOOP LP JMP RT:LEA DX,STR MOV AH,09HR:PRINT ENDP MOV CX,-1L: CMP AL,Q JZ exitq CALL LFCR CALL PRINT POP CX DEC CX PUSH CX JNZ L输入的AH是ASCII码SUB AL,30H使的转换为数字运用子程序调用可以使主程序看起来更加简洁明了,且易于调试,维护LFCR回车换行需注意将ax压栈,以便调用int 21h的输出功能Crlf db 0ah, 0dh, 即为回车换行实验六Programming a sub routine to calculate N!. Speci

11、fic requirements:Read a number N(16) from keyboard,programming a sub routine named DAC to calcute N!, then print the result to screen in decimal form.NUMBER DB ?STR db 0AH,0DH,you must input 16OUTPUT DB 20H,4 DUP(20H), MOV BX,10 MOV SI,4 L: IDIV BX ADD DX,30H MOV OUTPUTSI,DL MOV DX,0 DEC SI CMP SI,0

12、JG L CHECK0: INC SI CMP OUTPUTSI,30H JNZ RIGHT MOV OUTPUTSI, CMP SI,4 JL CHECK0 RIGHT:LEA DX,OUTPUTMOV AH,9INT 21HRET LEA DX,NUMBER JBE exit CMP AL,07H JAE EXIT MOV CL,AL MOV CH,0H MOV AX,1IMUL CX LOOPNZ LPMOV AH,09H一开始输出的十进制数带0,如0720,0002等,后检测为0即赋值20H(空格),发现6!=72,不仅去掉了开头的0,也去掉了末尾的0,将NUMBER由+1至+4检查,

13、遇到非0的数就退出检测可以解决。实验七在附加段中有一个从小到大排序的无符号数字数组,其首地址在DI中,数组的第一个单元存放数组长度。要求用折半查找法在数组中查找数N,假设该数已在AX中,如找到,CF=0,并在SI中给出该元素在数组中的偏移地址;如未找到,CF=1。TABLE db 1,4,7,9,16,31,36,49n DB 1r db 7l db 0 MOV di,offset TABLE mov bl,n mov cl,2check: MOV al,r cmp al,l add al,l mov ah,0 div cl mov ah,0 add si,ax cmp si,bl jl ri

14、ght mov r,al jmp check right:mov l,aljmp check sub ah,1 jmp exit cmp ax,0查找数字n=1(BX),得数组中序号0,即Table0(AX)=1满足搜索条件,使CF=0(NC),并 用mov si,di add si,ax使得si获得Table0(AX)的偏移地址。 一开始div cl 时忘记将AH设置成0,结果一直循环DIV C; ,SI+BI,IRETMOV AH,0后恢复正常 实验八在内存中有一个数组,里面是放着10个学生的某科的成绩,分别是:85,73,92,66,91,98,52,87,83,68, 请用冒泡排序法将

15、这10个数从大到小排序,并将排序的结果在屏幕上打印出来,要求一个数一行的格式输出。n equ 10 BUFFER DB 85,73,92,66,91,98,52,87,83,68 MOV BL,10 MOV SI,0 mov al, BUFFERsi IDIV BL MOV CX,AX MOV Dl,CL ADD DL,30H MOV Dl,CH LEA DX,CRLFINC SICMP SI,10JL L mov cx,n dec cx loop1: mov di,cx mov bx,0 loop2: mov al,bufferbx cmp al,bufferbx+1 jge continue xchg al,bufferbx+1 mov bufferbx,al continue: add bx,1 loop loop2 mov cx,di loop loop1 call PRINTmov ah, 4ch ;程序结束,返回到操作系统系统 int 21h END start即可实现换行注意输出字符时需转换成ASCII以便输出,idiv 10,先输出商再输出余数

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1