AA1: ADD AL,[BX] INC BX LOOP AA1 MOV TOTAL,AL 查看正确答案 累加和TOTAL=83
12 分析下列程序段的功能。 X DB 2,-3,15,0,9,4 …… LEA BX,X MOV CX,6 MOV AX,0
AA2:MOV AL,[BX] CMP AL,0 JNE NEXT INC AH NEXT:INC BX LOOP AA2 查看正确答案
循环统计X中0的个数
13 判断下列程序段能否完成给定功能。如有错误,请指出并改正。 (1)统计AL中1的个数。要求AL保持原值。 MOV BL,0 MOV CX,8 BB1:RCL AL,1 JNC NEXT INC BL
NEXT:LOOP BB1
(2)在ALPHA中查找字母”T”,找到后退出循环。 ALPHA DB “ERTYU” ……
MOV BX,OFFSET ALPHA MOV CX,5 BB2:CMP [BX],?T? LOOPNE BB2 查看正确答案
(1) 将BB1:RCL AL,1改为BB1:ROL AL,1 (2) 将BB2:CMP [BX],?T? LOOPNE BB2 改为: DEC BX BB2:INC BX CMP [BX],?T? LOOPNE BB2
14 源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STRG1传送到STRG2的功能。
15 写出计算Y=1×2+3×4+5×6+7×8+9×10的程序段。 查看正确答案
计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案: MOV AL,1 MOV BL,2 MOV DX,0 MOV CX,5 AA1:MUL BL ADD DX,AX INC BL MOV AL,BL INC BL LOOP AA1
16 写程序。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。 查看正确答案
写程序段。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。 catt db 'asd@ddd' sign db ? ……
mov ax,extra mov es,ax mov sign,0 mov al,'@' lea di,catt cld mov cx,7 repnz scasb
jcxz nee mov sign,1 nee: mov ah,4ch int 21h
17 写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。 查看正确答案
写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。 value dw 2,-4,-5,3,6,6,-8 n equ ($-value)/2 ;元素个数 ……
start: mov ax,data mov ds,ax mov cx,n mov bx,0 mov ax,0 rept1:
mov si,value[bx] ;取出元素 cmp si,0
jge let1 ;≥0 转let1 inc ax ;为负数,ax加1 let1: add bx,2 loop rept1
18 编程。从键盘输入一个数字,在屏幕上显示出以该数字开始的10个数字串。 查看正确答案
从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。 CODE SEGMENT ASSUME CS:CODE START: MOV AH,1 INT 21H MOV CX,10 MOV BL,AL REPT1: CMP BL,'9' JLE NEXT SUB BL,10 NEXT: MOV DL,BL MOV AH,2 INT 21H
INC BL LOOP REPT1 MOV AH,4CH INT 21H CODE ENDS END START
19 编程。比较两个字符串是否相同,统计并显示出相同的字符个数和不同的字符个数。 查看正确答案 data segment bunch1 db 'stadent' bunch2 db 'studEnt' data ends code segment
assume cs:code,ds:data,es:data start: mov ax,data mov ds,ax mov es,ax lea si,bunch1 lea di,bunch2
mov bx,0 ;bh=相同的个数,bl=不同的个数 mov cx,7 let1: mov al,[si]
cmp al,[di] ;两字符比较 jz equl ;相同转equl inc bl ;不同bl加1 jmp out1 equl: inc bh out1:inc si inc di loop let1
mov dl,'n' ;显示'n',代表不同 mov ah,2h int 21h
add bl,30h ;加上ASCII码 mov dl,bl ;显示不同的个数
int 21h
mov dl,'e' ;显示'e',代表相同 int 21h add bh,30h
mov dl,bh ;显示相同的个数 int 21h mov ah,4ch int 21h code ends end start
20 编程。在FOUND字数组中找出最小数存入MIN单元。
21 STRI单元存有10个字符的字符串,以0结尾,编程去掉其中的空格符,并将后续字符向前递补。 查看正确答案 DATA SEGMENT STR DB ?SDABF G H0? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DI,STR
SPACE:MOV CX,10 MOV AL,[DI] CMP AL,0 JE OUT CMP AL,20H JE DELETE JMP EXIT SUB CX,DI MOV SI,DI DELETE: MOV BL,[SI+1] MOV [SI],BL INC SI LOOP DELETE EXIT:JMP SPACE