首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 范文大全
  • 古典文学
  • 职场知识
  • 中国文学
  • 公文书信
  • 外国名著
  • 寓言童话
  • 百家讲坛
  • 散文/诗歌
  • 美文欣赏
  • 礼仪知识
  • 民俗风情
  • 谜语大全
  • 名言警句
  • 西安交通大学汇编第二次上机实验报告

    时间:2020-11-02 11:45:24 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:上机 汇编 西安交通大学

     提交上机结果的模板文件 第 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:你的截图(必选)

     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:你的文字解释说明(可选)

     说明:在 debug 环境下,执行 d 指令显示内存,由于不能显示其他字的内存值,所以只能

     一行一行截图,可以看到,此时内存值与程序初始定义值相同。

     (6)执行完计算后,立即显示各个寄存器的值

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

     说明:先执行 g 指令到执行回到 dos 系统指令,此时显然已经执行完运算,此时执行 r 指令就获得执行完运算后各个寄存器的值。

     (7)执行完计算后,显示数组 M 开始的 n+2 个字的内存值的截图(只能显示这n+2 个字的内存值,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

      说明:执行 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, 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 BX,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 end 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:你的文字解释说明(可选)

     说明:在 debug 环境下执行 u 指令显示出反汇编代码。

     (4)在进行计算前,显示数组 A 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

      说明:执行 d 指令显示出内存值,由于不能显示其他数内存值,所以一行一行进行截图,可以看到,此时内存值与程序初始定义相同。

     (5)在进行计算前,显示数组 B 中 20 个整数的内存值的截图(只能显示这 20个整数的内存值,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

     说明:执行 d 指令显示出内存值,由于不能显示其他整数内存值,所以一行一行进行截图,可以看到,此时数组 B 中的内存值与程序初始定义相同。

     (6)在进行计算前,显示数组 C 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分)

      TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

     说明:执行 d 指令显示出内存值,由于不能显示其他整数内存值,所以一行一行进行截图,可以看出,此时内存值与程序初始定义相同。

     (7)执行完计算后,立即显示各个寄存器的值

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

     说明:先用 g 指令跳到返回 dos 调用指令,此时已经执行完计算,再执行 r 指令,显示的就是执行完运算的各个寄存器的值。

     (8)执行完计算后,显示数组 A 中 15 个整数的内存值的截图(只能显示这 15个整数的内存值,多显示、少显示均扣分)

      TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

      说明:执行 d 指令显示出内存值,由于要求是不能显示其他字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。

     (9)执行完计算后,显示数组 B 中 20 个整数的内存值的截图(只能显示这 20个整数的内存值,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

      说明:执行 d 指令显示出内存值,由于要求是不能显示其他字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。

     (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,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

      ; assign 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,B[SI]

      ;想法是 di 指 A 中的元素,di 递增,拿 A 中的一个元素每次与 B 中的所有元素作比较

     CMP A[DI],CX

      ; 直到遇到相同为止,如果没有遇到相同,有设置对 si 值比较指令,b 中所有元素相同时

      JZ JI

      ;会跳转到 JI

      INC SI

     INC SI

      CMP SI,42

      JZ JI

      JMP jiao

      JI:mov ax,B[SI]

      mov C1[DI],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

     3、 分支程序设计 (1)汇编、连接后的截图

     TODO:你的截图(必选)

      TODO:你的文字解释说明(可选)

     说明:masm xun 得到 jishu.obj,jishu.crf,jishu.lst 文件,通过 link xun 得到 jishu.map 文件,显示编译成功。

     (2).lst 文件的截图

     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)在进行计算前,显示在数据段中定义的学号字符串的内存值的截图(只能显示完整的学号字符串,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

      说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,可以看出,此时内存值与程序初始定义相同。

      (6)在进行计算前,显示在数据段中定义的 COUNT 数组的内存值的截图(只能显示完整的 COUNT 数组内容,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

     说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,可以看出,此时内存值与程序初始定义相同。

     (7)执行完计算后,立即显示各个寄存器的值

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

     说明:通过执行 g 指令跳到调用 dos 系统的指令,此时已经执行完运算,再执行 r 指令,显示出的就是执行完计算后各个寄存器的值。

     (8)执行完计算后,显示在数据段中定义的学号字符串的内存值的截图(只能显示完整的学号字符串,多显示、少显示均扣分)

     TODO:你的截图(必选)

     TODO:你的文字解释说明(可选)

      说明:执行 d 指令显示出内存值,由于不能显示其他内存值,所以一行一行进行截图,可以看出,此时内存值与程序期望相同。

     (9)执行完计算后,显示在数据段中定义的 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

      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

      ; assign 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,B[SI]

      ;想法是 di 指 A 中的元素,di 递增,拿 A 中的一个元素每次与B 中的所有元素作比较

      CMP A[DI],CX

      ; 直到遇到相同为止,如果没有遇到相同,有设置对 si 值比较指令,b 中所有元素相同时

      JZ JI

      ;会跳转到 JI

      INC SI

     INC SI

      CMP SI,42

      JZ JI

      JMP jiao

      JI:mov ax,B[SI]

      mov C1[DI],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

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识