第三章
1、
(1)MOV CX,[BX+SI] (2) ADD ARRAY[BX],AX
(3) CMP BYTE PTR NUMBER,0B6h
(4) TEST BYTE PTR [BP+DI]VALUE,80h
(5) MOV BL,AL
AND BL,0F0H
MOV CL,4
SHL AL,CL
SHR BL,CL
OR AL,BL
MOV WORD PTR[DI],0
SUB AX,AX
2、C、A、B、E、D
3、(1)1200h
(2) 647Ah
(3) 7Dh,0B7h
4、(1) LEA BX,TABLE
ADD BX,6
MOV CX,[BX]
(2) LEA BX,TABLE
MOV CX,[BX+6]
(3) LEA BX,TABLE
MOV SI,6
MOV CX,[BX+SI]
5、(1)寄存器 (2) 存储器基址变址 (3)立即数
(4)存储器寄存器 (5)寄存器
6、(1)类型不一致 (2) 不能直接修改CS
(3) 没有指出类型 (4)不能用立即数给段寄存器赋值
(5)不能用段寄存器参与计算 (6)CX不能当地址寄存器
(7) 两个操作数不能都是内存单元 (8)标号不能是关键字
7、(1) CX( DS:[2700h] (2) DS:[SI+50] ( DH
(3) ARRAY偏移地址( SI (4) DL+DS:[BX]+CF(DL
(5) 字DS:[SI+ ALPHA偏移]的内容左移CL位
8、(1)BX内容 (2) DS:[BX]
(3) AGAIN的偏移地址 (4) DS:[BX+DI]
9、(1) EB1EH (2) E91D29H (3) EA00300020H (4) E90DFFH
10、(1) 取内容 与 取地址
(2) 与 与 或
(3) 加内存单元 与 加寄存器
(4) 减 与 比较
(5) SS:[BP+BX],DS:[BP+BX]
11、SHR、AND、TEST
12、AND AX,8000H
JZ XXXX
13、(1) MOV AX,51H
MOV CL,2
SHL AX,CL
MOV AX,-46
MOV CL,2
SHL AX,CL
ADD AX,8000H
14、0( 0FFFFh ( 0 ( 2 ( 0FFFEh ( 0FFFDh ( 5 ( 4 ( 0 ( 0 (0
15、NEG DX
16、1B62H,B620H,B640H
第四章 答案
1、
Getlen proc
mov bx,offset str1
Xor cx,cx
Again:
Cmp byte ptr [bx],0
Jz exitp
Inc cx
Jmp again
Mov ax,cx
Ret
Getlen endp
2、
PUSH AX
AND 0Fh
POP BX
PUSH BX
MOV CX,4
SHR BX,4
POP DX
PUSH DX
MOV CX,8
SHR DX,CL
PUSH DX
POP DX
MOV CX,12
SHL DX,CL
POP CX
3、
Again:
mov ah,1
Int 21h
Cmp al,60h
Jb again
Cmp al,7Bh
Ja again
Sub al,20h
Mov dl,al
Mov ah,2
Int 21h
4、.model small
,stack
,data
X db 12
Y db 67
Z db?
,code
,startup
Mov al,X
Cmp al,Y
JA Next1
Mov al,Y
Next1:
Mov Z,Al
,exit 0
end
5、….
,data
X dw -5
Sign1 dw?
,code
,startup
Mov AX,X
AND AX,8000H
JZ Next1
MOV X,0
Jmp Next2
Next1:
MOV Sign1,0FFFFH
Next2:
6,.model small
,stack
,data
XX DW 1234
YY DW 1235
ZZ DW 4567
Str1 db "Three equal$"
Str2 db "Two equal$"
Str3 db "No equal$"
,code
,startup
Mov ax,XX
Cmp ax,YY
Jz labelA
mov bx,YY
cmp bx,ZZ
jz label2
lea dx,str3 ;全不等
jmp label4
labelA:
cmp ax,ZZ
jnz label2
lea dx,str1
jmp label4
label2:
lea dx,str2
label4:
mov ah,9
int 21h
,exit 0
end
7、cmp word ptr[0006],5
Jz 004F
Cmp bx,cx
Jz 0050
Inc ax
8、mov di,offset STRING2
Mov si,offset string1
Mov cx,COUNT
Again:
Mov al,[si]
Mov [di],al
Inc di
Inc si
Loop again
9、Mov bx,0020h
Mov ds,bx
Mov cx,0ffffh
Xor bx,bx
Xor dx,dx
Again:
Cmp byte ptr[bx],20h
Jnz next1
Inc dx
Next1:
Loop again;结果保存在 DX
10、.model small
,stack
,data
,code
,startup
mov ah,1
int 21h
mov bh,al
mov cx,8
mov bl,80h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
again:
test bh,bl
jz label1
mov dl,'1'
jmp next
label1:
mov dl,'0'
next:
mov ah,2
int 21h
shr bl,1
loop again
,exit 0
End
11、.model small
,stack
,data
ARRAY dw 12,-34,56,-78,78,56,23,56,-45,9,-7,-8,2,3,4,5,6,7,87,-88
ARRAYP dw 20 dup(0)
ARRAYN dw 20 dup(0)
,code
,startup
mov cx,20
mov bx,offset ARRAY
mov DI,offset ARRAYP
mov SI,offset ARRAYN
again:
test word ptr[bx],8000h
jz label1
mov ax,[bx]
mov [si],ax
ADD si,2
jmp next
label1:
mov ax,[bx]
mov [di],ax
ADD di,2
next:
ADD BX,2
loop again
,exit 0
End
12、
,data
myData dw ………;设数据放在此处
WORDSUM dw?
,code
,startup
Mov cx,100
Mov bx,offset myData
Xor ax,ax
Again:
Add ax,[bx]
Jo label1
Loop again
Mov WORDSUM,ax
,exit 0
Label1:
Mov dx,offset sum overflow
Mov ah,9
Int 21h
,exit 0
end