.. . . ..
SHL AX,CL AND BL,0FH AND DH,0F0H SHR DH,CL SHL BL,CL OR AL,DH OR AL,BL
(2)将CX中间8位取反,其余位不变
XOR CX,0FF0H
(3)将数据段以BX为偏移地址的连续3单元中的无符号数求和。
MOV CX,3 MOV AL,0 LAB:ADD AL,[BX]
ADC AH,00H;(注意字节单元的和可能超过一个字节,故这里和扩展至AH)
INC BX LOOP LAB
(4) 将数据段中以BX为偏移地址的连续4单元中的内容颠倒过来
MOV CX,2 ;(4/2单元个数除2,循环计数) MOV SI,BX
ADD SI,3 ;(指向最后一个数据单元,首地址+单元个数-1) LAB:MOV AL,[BX]
. 学习帮手 .
.. . . ..
XCHG AL,[SI] MOV [BX],AL INC BX DEC SI LOOP LAB
(5) 将BX中的4位压缩BCD数用非压缩数形式按序放在AL,BL,CL和DL中 MOV CL,4 (注意先后次序,不能用其它寄存器) MOV DL,BL AND DL,0FH MOV AL,BH SHR AL,CL XCHG BH,BL AND BL,0FH SHR BH,CL MOV CL,BH (6)
不用乘法指令实现AL(无符号数)乘以20 AL*(24+22)( 24左移4位,22左移2位) MOV AH,0
MOV CL,2
SAL AX,CL ;进行乘4操作 MOV BX,AX ;保留乘4中间结果 SAL AX,CL;再移2次,相当于乘16
. 学习帮手 .
.. . . ..
ADD AX,BX
7.10 一段数据定义为:
DATA SEGMENT S1 DB 0,1,2,3,4,5 S2 DB ‘12345’ COUNT=$-S1 NB DB 3DUP(2) NW DW 120,-256 P DW -1 DATA ENDS
(1)画出该数据段数据存储形式(注意:符号常量COUNT不分配存储单元)
地址 S1 -0000H 0001H 0002H 0003H 0004H 0005H S2 -0006H 0007H 0008H 内容 00H 01H 02H 03H 04H 05H 31H 32H 33H . 学习帮手 .
.. . . ..
0009H 000AH NB -000BH 000CH 000DH NW -000EH 000FH 0010H 0011H P -0012H 0013H
34H 35H 02H 02H 02H 78H 00H AAH FDH FFH FFH (2)在下表中填写各变量的偏移地址和各变量的值 变量名 S1 S2 NB
. 学习帮手 .
偏移地址 0000H 0006H 000BH 变量值 00H 31H 02H 变量名 NW P 偏移地址 000EH 0012H 变量值 0078H FFFFH