重庆大学计算机硬件技术基础教学课件,重庆大学计算机硬件技术基础实验参考程序...

41528d3028836879cd698677c3999917.gif重庆大学计算机硬件技术基础实验参考程序

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATASEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATAENDS CODESEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH;正常返回DOS系统 INT 21H CODEENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X1X2 拆为 X1 和 X2 两 部分,并以 0X1 和 0X2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATASEGMENT ARY DB 2AH,?,? DATAENDS CODESEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY;取ARY的偏移地址 MOV AL,[SI];取16进制数至AL MOV BL,AL AND AL,0F0H;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL;存0X1 MOV AL,BL AND AL,0FH;取16进制数的低四位,即X2 MOV [SI+2],AL;存0X2 MOV AH,4CH INT 21H CODEENDS END START 实验二:分支程序设计实验 (1)编写一个字符比较程序,比较 3 个无符号字节数 A,B,C 的大小,并根据比较结果 对变量 K 赋值: 如果 3 个数不相等,则 K=0; 如果 3 个数中有两个相等,则 K=1; 如果 3 个数都相等,则 K=2。 程序流程图略。 参考源程序: DATASEGMENT;定义待比较数A、B、C,比较结果K A DB 20H B DB 20H C DB 20H K DB ? DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A CMP AL,B;对A、B进行比较,不相等则转到COMP2 JNE COMP2;相等则比较A、C CMP AL,C JNE K1;A、C不相等则K=1 JMP K2;A、C相等则K=2 COMP2: MOV BL,B CMP BL,C JE K1;对B、C进行比较,相等则K=1 CMP AL,C JE K1;对A、C进行比较,相等则K=1 K0:MOV K,0 JMP EXIT K1:MOV K,1 JMP EXIT K2:MOV K,2 EXIT:MOV AH,4CH INT 21H CODEENDS END START (2)编写一个能实现下列表达式的程序: ⎧ N = ⎨ A + B A ≤ B 设 A,B,C 为小于 128 的正整数。 ⎩ A − B + C 程序流程图略。 参考源程序: DATASEGMENT A > B A DB 22H;定义 A、B、C、N B DB 10H C DB 01H N DB ? DATAENDS CODESEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL, A CMP AL, B JG CALCUL;A 小于或等于 B 则 N=A+B ADD AL,B JMP EXIT CALCUL: SUB AL, B ADC AL, C EXIT:MOV N, AL MOV AH,4CH INT 21H CODEENDS END START 实验三 循环程序设计实验 (1)将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符 因含有奇数个“1”而加上了校验位。统计结果存于N单元中。 程序流程图略。 参考源程序: DATASEGMENT STRN DB What$ ;任意定义一个字串,以“$”结尾 COUNT EQU $-STRN N DB ? BUF DB COUNT DUP(?) DATAENDS CODESEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX, DATA MOV DS, AX MOV AX, DATA MOV ES, AX LEA SI, STRN LEA DI, BUF MOV CX, COUNT MOV AL, 0 LP1:MOV BL, [SI];逐个取字符进行判断 AND BL, BL;自己和自己做与运算 JP NEXT;根据 PF 标志位的变化进行跳转 INC AL ORBL, 80H NEXT:MOV [DI], BL INC SI INC DI LOOP LP1 MOV N, AL MOV AH, 4CH INT 21H CODEENDS END START (2)在 FIRST 开始的一片连续的数据区中存放着 100 个数据,编写一个程序,统计第 1 个数据‘0’之前的数据个数。 程序流程图略。 参考源程序: DATASEGMENT FIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H;任取 9 个数做演示 COUNT EQU $-FIRST NUM DB ? DATAENDS CODESEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX,DATA MOV DS,AX MOV DL, 0;计数值初始为 0 MOV CX,COUNT MOV BX, OFFSET FIRST LP1:MOV AL, [BX];每次取一个数,与 0 比较 CMP AL, 00H JNE NEXT JMP EXIT;找到 0 则退出 NEXT:INC DL;没找到 0 则计数值加 1 INC BX LOOP LP1 EXIT

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值