计算机组成原理与汇编实验报告汇总.docx
12页计算机组成原理与汇编实验报告 计算机组成原理与汇编实验报告 学院:信息科学与工程学院 专业班级:物联网工程1202班 指导老师:贺建飚 学号:0909123006 姓名:胡松 实验一:二进制转十六进制 一、实验原理: 在源程序中设置数据段、堆栈段及代码段,在数据段中定义八个字节数据,把这些数据转换成16 进制数的ASCll 码存 在上述数据之后,然后在屏幕上显示这些数据 二、实验目的 1. 掌握86 系列汇编语言及指令的格式和寻址方式 2. 掌握86 系列汇编语言各类指令的用法 3. 掌握简单程序、分支程序、循环程序、子程序等的设计方法 三、实验内容 流程图: NAME EX1 ; 程序命名伪指令,程序名为EX1 PAGE 50,70 ; 表示占了50行,70列 DAT SEGMENT PARA'DAT' ;数据段定义伪指令 A1 DB 12H,34H,56H,78H,9AH DB 0BCH,0DEH,0F0H B1=$-A1 ;赋值伪指令,求A1(符号地址)到当前汇编地址($)的字节数 B2=B1*2 ;求2倍的B1 A2 DB B2 DUP(?) ;数据重复定义伪指令,定义ASCII码字符区DAT ENDS STAC SEGMENT PARA STACK 'STA' ;定义堆栈段 STA1 DW 100 DUP(?) STAC ENDS CODE SEGMENT PARA 'CODE' ASSUME CS:CODE,DS:DAT,SS:STAC,ES:DAT STAR PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV ES,AX LEA SI,A1 ;把A1首地址赋给SI LEA DI,A2 ;转化后用来放结果 MOV CX,B1 G1: MOV BL,2 MOV AL,[SI] ;把八位的数据赋给AL,准备转化 MOV BH,AL ;把AL中的数据暂存于BH中 PUSH CX ;保护CX中的数据 MOV CL,4 ;指出移位的位数为4 ROR AL,CL ;循环右移四位 POP CX ;把CX弹出堆栈 G2: AND AL,0FH ;把AL中的数据和0FH“与”,得到高四位 DAA ;对AL两位十进制数做(BCD)调整 ADD AL,0F0H ADC AL,40H MOV [DI],AL ;存ASCII码 INC DI ;修改地址加一 MOV AL,BH DEC BL JNZ G2 INC SI ;指向下一个数 LOOP G1 MOV SI,OFFSET A2 ;A2的偏移地址送给SI寄存器 MOV CX,B2 CALL P1 RET ;子程序返回 STAR ENDP P1 PROC MOV BL,2 G: MOV DL,[SI] MOV AH,2 INT 21H INC SI ;指向下一个要显示的数 DEC BL JNZ T ;连续显示两个数,未完继续 MOV DL,' ' MOV AH,2 INT 21H MOV BL,2 T: LOOP G RET P1 ENDP CODE ENDS END STAR 四、实验结果 五、实验心得 读了这个程序之后发现,想要真正理解一个程序都是需要掌握众多助记符的用法以及它的意思,只有了解并明白了这些之后才可以分析程序或者是编写简单的小程序 实验二:起泡排序算法 二、实验原理: 在源程序中设置数据段、堆栈段及代码段,在数据段中定义八个字节数据,把这些数据转换成16 进制数的ASCll 码存在上述数据之后,然后在屏幕上显示这些数据。
二、实验目的 1.掌握循环程序的设计方法; 2.了解循环结构在程序中的重要作用起泡排序程序 三、实验内容 流程图: STACKSG SEGMENT STACK 'S' DW 64 DUP('ST') STACKSG ENDS DATA SEGMENT ARY DW 5,7,1,4,3,6,9,8,2 ;数组,流程图中为A CT EQU($-ARY)/2 ;元素个数 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSG MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV DI,CT-1 ;初始化外循环次数 LOP1: MOV CX,DI ;置内循环次数 MOV BX,0 ;置地址指针 LOP2: MOV AX,ARY[BX] CMP AX,ARY[BX+2] ;两数比较 JGE CONT ;次序正确转 XCHG AX,ARY[BX+2] ;次序不正确互换位置 MOV ARY[BX],AX CONT: ADD BX,2 ;修改地址指针 LOOP LOP2 ;内循环控制 DEC DI ;修改外循环次数 JNZ LOP1 ;外循环控制 MOV AX,4C00H INT 21H MAIN ENDP CODE ENDS END MAIN 四、实验结果 五、实验心得 1.在进行循环程序设计时,要注意循环初始化、内外层循环的 控制、循环结束条件等的设置,对整个程序的执行逻辑要非常清楚,这样可以避免死循环等意外情况的出现。
2 .当要观察排序结果时,可利用D命令,显示数据段的内容, 检查程序是否正常运行 实验三:查找匹配字符串 一、实验原理: 字符串的匹配进行应选用repz cmpsb操作,匹配一次过程后去判断关键字的指针移动的步数是不是和关键字长度相同,如果相同说明匹配成功,调用进制转化函数将结果输出即可,如果句子的指针移动到最后也没有使关键字的指针移动到它的结尾说明不能匹配 二、实验目的 练习字符串的匹配程序设计 三、实验内容 流程图如下: 源程序: datarea segment keyadr label byte keymax db 20 keyact db ? keystring db 20 dup(?) senadr label byte senmax db 50 senact db ? secstring db 50 dup(?) messkey db 'Enter keyword:','$' messsen db 0dh,0ah,'Enter Sentence:','$' nomatch db 0dh,0ah,'No match.','$' match db 0dh,0ah,'Match at location:','$' rest db 'H of the sentence.','$' datarea ends ;******************************************************** prognam segment main proc far assume cs:prognam,ds:datarea,es:datarea start: push ds xor ax,ax push ax mov ax,datarea mov ds,ax mov es,ax lea dx,messkey mov ah,09h int 21h lea dx,keyadr mov ah,0ah int 21h lea dx,messsen mov ah,09h int 21h lea dx,senadr mov ah,0ah int 21h mov al,senact sub al,keyact jl nmatch call search jmp short e0 nmatch: lea dx,nomatch mov ah,09h int 21h e0: ret main endp ;------------------------------------------------------- search proc near xor cx,cx;markoff counter mov dx,offset senadr add dl,senact inc dl mov cl,keyact cld lea di,secstring r0: lea si,keystring repz cmpsb mov al,byte ptr [si-1] cmp al,byte ptr [di-1] jnz next sub si,offset keystring mov ax,si cmp al,keyact je showp next: mov cl,keyact cmp di,dx jnz r0 shown: lea dx,nomatch mov ah,09h int 21h jmp short e1 showp: lea dx,match mov ah,09h int 21h dec di mov bx,di xor ax,ax mov al,keyact sub bx,。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


