MOV Z+2,DX MOV AX,X+2 MUL Y
ADD Z+2,AX ADC DX,0 MOV Z+4,DX
MOV AX,X MUL Y+2 ADD Z+4,AX
ADC DX,0 MOV Z+6,DX MOV AX,X+2 MUL Y+2 ADD Z+6,AX ADC DX,0 MOV Z+8,DX
4.11用移位指令为主实现对AX中的无符号数乘以5,不考虑乘积可能超出16位。
答: MOV DX,AX
MOV CL,2 SHL AX,CL ADD AX,DX
4.12 用移位指令为主实现对AX中的无符号数乘以5,考虑乘积可能超出16位的情况。
答: MOV DX,0
MOV BX,AX SHL AX,1 ADC DX,0
SHL DX,1 SHL AX,1 ADC DX,0 ADD AX,BX ADC DX,0
4.13 把AX中的内容依次倒排序,即第0位移到第15位,第1位移到第14位,?。 答:先设AX值 Mov di,0 Mov bx,0 Mov si,1 Mov cl,2 Ror ax,1
K: Rol ax,cl Mov bx,ax And bx,si Add di,bx Shl,si,1 Cmp si,0 Jnz k Mov ax,di
4.14 在数据段有如下定义:
BUFF DB ‘ABCD$EFGHIJK$’ STR1 DB 12 DUP(?) LEN DB ?
用串指令编写程序完成以下操作: (1) 对字符串STR1全部置‘*’符。
(2) 从左到右把BUFF中的字符串传送到STR1。 (3) 从右到左把BUFF中的字符串传送到STR1。
(4) 比较BUFF与STR1两个字符串是否相等,如相等则DX=1,否则DX=0。 (5) 查找BUFF中有无字符$,把字符$出现的次数计入BX寄存器。 答:
(1)
MOV AX,DATA MOV DS,AX MOV AL,‘*’ LEA DI,STR1
MOV CX,STR1-BUFF CLD
REP STOSB (2)
MOV AX,DATA MOV DS,AX MOV ES,AX CLD
LEA SI,BUFF LEA DI,STR1
MOV CX,STR1-BUFF REP MOVSB (3)
MOV AX,DATA MOV DS,AX MOV ES,AX STD
LEA SI,STR1-1 LEA DI,LEN-1
MOV CX,STR1-BUFF REP MOVSB (4)
MOV AX,DATA MOV DS,AX MOV ES,AX CLD
LEA SI,BUFF LEA DI,STR1
MOV CX,STR1-BUFF REPE CMPSB
(5)
MOV AX,DATA MOV ES,AX MOV BX,0 CLD
MOV AL,‘$’ LEA SI,BUFF
MOV CX,STR1-BUFF NEXT: REPNE SCASB JCXZ NO-FOUND INC BX JMP NEXT
4.15 对于给定的AX和BX的值,执行下列程序段,程序将转向哪里? ADD AX, BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5 (1) AX=1234H, BX=6789H (2) AX=790EH, BX=8831H (3) AX=E002H, BX=8086H 答:L1,L1,L1,L5
4.16 下面不完整的程序段是比较AX和BX的值,把其中大的数送MAX变量。如果是无符号数,应如何填写指令?如果是有符号数,应如何填写指令? CMP AX,BX
( ) MOV MAX,AX
( ) L1:MOV MAX,BX L2:HLT 答: JB L1 JMP L2
4.17 在下列程序段的括号中分别填入如下指令,程序执行完后,AX、CX的内容是什么?
(1) LOOP L1 (2) LOOPE L1 (3) LOOPNZ L1
MOV AX, 6 MOV CX,3 L1:ROL AX,CL TEST AL,3 ( ) 答:(1)AX=0C000H,CX=0000 (2)AX=0003H,CX=0002 (3)AX=0C000H,CX=0000
4.18 测试AL寄存器,如果最高位和最低位同时为0,则转L0,如果最高位和最低位只有一位为1,则转L1,如果最高位和最低位同时为1,则转L2。画出流程图,并编写程序段。 答:
Code segment
Assume cs:code Start:
ROR AL,1 AND AL,3 JZ L0 SUB AL,3 JZ L2 JMP L1 L0:
JMP Exit L1:
JMP Exit L2:
Exit:hlt code ends
end start
4.19 从键盘输入一个英文字母,显示输出其大写。画出流程图,并编写程序段。 答:
Code segment
Assume cs:code Start:
Mov ah,1 Int 21h sub al,20h mov dl,al mov ah,2 int 21h hlt
code ends
end start
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编语言程序设计答案(3)在线全文阅读。
相关推荐: