西安交通大学汇编第二次上机实验报告.docx

上传人:PIYPING 文档编号:13233280 上传时间:2021-12-19 格式:DOCX 页数:18 大小:16.46KB
返回 下载 相关 举报
西安交通大学汇编第二次上机实验报告.docx_第1页
第1页 / 共18页
西安交通大学汇编第二次上机实验报告.docx_第2页
第2页 / 共18页
西安交通大学汇编第二次上机实验报告.docx_第3页
第3页 / 共18页
西安交通大学汇编第二次上机实验报告.docx_第4页
第4页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《西安交通大学汇编第二次上机实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学汇编第二次上机实验报告.docx(18页珍藏版)》请在三一文库上搜索。

1、西安交通大学汇编第二次上机实验报告 提交上机结果的模板文件 第 2 次线上上机 班级 学号 姓名 1、 循环程序设计-1 (1)汇编、连接后的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:masm xun 得到 xun.obj,xun.crf,xun.lst 文件,通过 link xun 得到 xun.map 文件,显示编译成功。 (2).lst 文件的截图, TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:通过 masm 对程序进行编译时生成.lst 文件,通过 notepad+打开.lst 文件,并进行截图 (3)反汇编的截图 TODO:

2、你的截图(必选) TODO:你的文字解释说明(可选) 说明:在 debug 环境下执行 u 指令,显示出反汇编代码。 (4)在完成 DS 赋值后,立即显示各个寄存器的值 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:按单步 t 之后,下方出现 MOV DS,AX,即下一条即将执行的指令为 MOV DS,AX,再按一次 t,此时 DS 被赋值,此时执行的 r 指令显示的就是 DS 赋值后各个寄存器的值。 (5)在进行计算前,显示数组 M 开始的 n+2 个字的内存值的截图(只能显示这n+2 个字的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文

3、字解释说明(可选) 说明:在 debug 环境下,执行 d 指令显示内存,由于不能显示其他字的内存值,所以只能 一行一行截图,可以看到,此时内存值与程序初始定义值相同。 (6)执行完计算后,立即显示各个寄存器的值 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:先执行 g 指令到执行回到 dos 系统指令,此时显然已经执行完运算,此时执行 r 指令就获得执行完运算后各个寄存器的值。 (7)执行完计算后,显示数组 M 开始的 n+2 个字的内存值的截图(只能显示这n+2 个字的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说

4、明:执行 d 指令显示出内存值,由于要求是不能显示其他字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。 (8)源代码 TODO:你的源代码(必选) ; empty asm file title I love asm data segment n dw 0010h M dw 0021h,0084h,0041h,0010h,0027h,0018h,0044h,0011H,0002h,0028h,0024h,0020h,0022h,0014h,0030h,0040h DATA1 DW ? ADDRR DW ? data ends code segment assume cs:code

5、, ds:data main proc ; assign the data segment base address to DS mov ax, data mov ds, ax ; TODO . ; | add your code between arrows | ; v - v MOV CX, n ;循环计数器 LEA DI, M MOV AX,DI ;取第一个数 MOV ADDRR, DI ;记下绝对值最大的数的地址 CMP AX,0 ;此数是正数吗? JNS ZHEN ;是正数,即为绝对值,转去判断下一个数 NEG AX ;不是正数,变为其绝对值 ZHEN:MOV BX,DI CMP B

6、X,0 ;此数是正数吗? JNS COMP ;是正数,即为绝对值,转去比较绝对值大小 NEG BX ;不是正数,变为其绝对值 COMP: CMP AX, BX ;判断绝对值大小 JAE ADDRESS MOV AX, BX ;(AX)(BX),使(AX)中为绝对值最大的数 MOV ADDRR, DI ;记下绝对值最大的数的地址 ADDRESS:ADD DI, 2 LOOP ZHEN MOV DATA1, AX ;记下此数 ; - ; | The END | ; method 2: return to dos mov ax, 4c00h int 21h main endp code ends e

7、nd main 2、 循环程序设计-2 (1)汇编、连接后的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:masm xun 得到 xunhuan.obj,xunhuan.crf,xunhuan.lst 文件,通过 link xunhaun 得到xunhaun.map 文件,显示编译成功。 (2).lst 文件的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:通过 masm 编译 jishu,获得 jishu.lst 文件,要 notepad+打开并进行截图。 (3)反汇编的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可

8、选) 说明:在 debug 环境下执行 u 指令显示出反汇编代码。 (4)在进行计算前,显示数组 A 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于不能显示其他数内存值,所以一行一行进行截图,可以看到,此时内存值与程序初始定义相同。 (5)在进行计算前,显示数组 B 中 20 个整数的内存值的截图(只能显示这 20个整数的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由

9、于不能显示其他整数内存值,所以一行一行进行截图,可以看到,此时数组 B 中的内存值与程序初始定义相同。 (6)在进行计算前,显示数组 C 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于不能显示其他整数内存值,所以一行一行进行截图,可以看出,此时内存值与程序初始定义相同。 (7)执行完计算后,立即显示各个寄存器的值 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:先用 g 指令跳到返回 dos 调用指令,此时已经执行完计算,再执行

10、r 指令,显示的就是执行完运算的各个寄存器的值。 (8)执行完计算后,显示数组 A 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于要求是不能显示其他字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。 (9)执行完计算后,显示数组 B 中 20 个整数的内存值的截图(只能显示这 20个整数的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于要求是不能显示其他

11、字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。 (10)执行完计算后,显示数组 C 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于要求是不能显示其他字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。 (11)源代码 TODO:你的源代码(必选) ; empty asm file title I love asm data segment A dw 0027h,0018h,0021h,0028h,0024h,0020h,0

12、022h,0014h,0011h,0010h,0012h,0017h,0084h,0081h,0080H B dw 0018h,0021h,0028h,0024h,0020h,0022h,0044H,0041h,0011h,0010h,0012h,0017h,0084h,0081h,0080h,0040h,0042h,0047h,0002h,0007h C1 DW 13 DUP(?) data ends code segment assume cs:code, ds:data main proc ; assign the data segment base address to DS mov

13、ax, data mov ds, ax ; TODO . ; | add your code between arrows | ; v - v mov si,0 MOV DI,0 mov bx,A jiao:MOV CX,BSI ;想法是 di 指 A 中的元素,di 递增,拿 A 中的一个元素每次与 B 中的所有元素作比较 CMP ADI,CX ; 直到遇到相同为止,如果没有遇到相同,有设置对 si 值比较指令,b 中所有元素相同时 JZ JI ;会跳转到 JI INC SI INC SI CMP SI,42 JZ JI JMP jiao JI:mov ax,BSI mov C1DI,AX

14、MOV SI,0 INC DI INC DI CMP DI,32 JZ EXIT JMP jiao ; - ; | The END | ; method 2: return to dos EXIT: mov ax, 4c00h int 21h main endp code ends end main 3、 分支程序设计 (1)汇编、连接后的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:masm xun 得到 jishu.obj,jishu.crf,jishu.lst 文件,通过 link xun 得到 jishu.map 文件,显示编译成功。 (2).lst 文件

15、的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:通过 masm 形成 jishu.lst 文件,通过 notepad+打开,并进行截图。 (3)反汇编的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:在 debug 环境下执行 u 指令,显示出反汇编代码。 (4)在完成 DS 赋值后,立即显示各个寄存器的值 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:第一步 t 指令执行底下为 MOV DS,AX,说明接下来执行的指令是 MOV DS,AX,所以再执行一次 t 指令,然后用 r 指令显示寄存器当前的值。 (5)

16、在进行计算前,显示在数据段中定义的学号字符串的内存值的截图(只能显示完整的学号字符串,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,可以看出,此时内存值与程序初始定义相同。 (6)在进行计算前,显示在数据段中定义的 COUNT 数组的内存值的截图(只能显示完整的 COUNT 数组内容,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,可以看出,此时内存值与程

17、序初始定义相同。 (7)执行完计算后,立即显示各个寄存器的值 TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:通过执行 g 指令跳到调用 dos 系统的指令,此时已经执行完运算,再执行 r 指令,显示出的就是执行完计算后各个寄存器的值。 (8)执行完计算后,显示在数据段中定义的学号字符串的内存值的截图(只能显示完整的学号字符串,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,可以看出,此时内存值与程序期望相同。 (9)执行完计算后,显示在数据段中定义的

18、COUNT 数组的内存值的截图(只能显示完整的 COUNT 数组内容,多显示、少显示均扣分) TODO:你的截图(必选) TODO:你的文字解释说明(可选) 说明:说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,。学号为 2184411027,0-9 个数分别为 1,3,2,0,2,0,0,1,1,0,结果正确。 (10)程序在 DOSBox 下直接运行的截图 TODO:你的截图(必选) TODO:你的文字解释说明(可选) (11)源代码 TODO:你的源代码(必选) ; empty asm file title I love asm data segment

19、A dw 0027h,0018h,0021h,0028h,0024h,0020h,0022h,0014h,0011h,0010h,0012h,0017h,0084h,0081h,0080H B dw 0018h,0021h,0028h,0024h,0020h,0022h,0044H,0041h,0011h,0010h,0012h,0017h,0084h,0081h,0080h,0040h,0042h,0047h,0002h,0007h C1 DW 13 DUP(?) data ends code segment assume cs:code, ds:data main proc ; assig

20、n the data segment base address to DS mov ax, data mov ds, ax ; TODO . ; | add your code between arrows | ; v - v mov si,0 MOV DI,0 mov bx,A jiao:MOV CX,BSI ;想法是 di 指 A 中的元素,di 递增,拿 A 中的一个元素每次与B 中的所有元素作比较 CMP ADI,CX ; 直到遇到相同为止,如果没有遇到相同,有设置对 si 值比较指令,b 中所有元素相同时 JZ JI ;会跳转到 JI INC SI INC SI CMP SI,42 JZ JI JMP jiao JI:mov ax,BSI mov C1DI,AX MOV SI,0 INC DI INC DI CMP DI,32 JZ EXIT JMP jiao ; - ; | The END | ; method 2: return to dos EXIT: mov ax, 4c00h int 21h main endp code ends end main

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1