习题4-4.试编程序将内存从 50000H 到 5FFFFH 的每个单元均写入数 55H,并再逐个单元读出比较,看写入的与读出的是否一致
若全对,则将 AL 置 0;只要有错,则将 AL 置 0FFH
解:START: MOV AX,5000HMOV DS,AXMOV SI,0MOV CX, 0FFFFHLOOP1: MOV BYTE PTR [SI], 55HMOV AL, [SI]CMP AL, 55HJNZ LOOPERRLOOP2:INC SILOOP LOOP1MOV BYTE PTR [SI], 55H;最后一个单元MOV AL, [SI]CMP AL, 55HJNZ LOOPERRMOV AL, 0;全对JMP LOOPOUTLOOPERR:MOV AL, 0FFHLOOPOUT:NOP4-5.编写一个子程序,对 AL 中的 ASCII 字符添加偶校验位(bit7),即:使 AL 中的“1”的个数为偶数
解:ADDPARITYPROCNEARAND AL, 7FHJP ADDEXITOR AL, 80HADDEXIT:RETADDPARITYENDP4-6.利用上题的子程序,编程对内存物理地址 10000H 开始的 1024 个单元的 ASCII 字符加上偶校验位
解:START: MOV AX,1000HMOV DS,AXMOV SI,0MOV CX, 1024LOOP1:MOV AL, [SI]CALL ADDPARITYMOV [SI], ALINC SILOOP LOOP14-7、试写一子程序,完成对一个 8 位无符号数乘 6 的操作
要求:(1)只能用传送、加法及移位指令;(2)入口参数(即 8 位无符号数)放于 AL 中,出口参数(即乘 6 后的结果)放于 AX
解:MULTI6PROCNEARPUSH BXMOV AH, 0SHL AX, 1;