MOV NEXT: MOV MIN , HLT 4.下面程序段的功能是完成将DA1开始的单元中的0~9共10个数字转换成对应的ASCII码送ASC1开始的单元中存放。请将程序段补充完整。
DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H DB 09H
ASC1 DB 10 DUP(?) CUNT=ASC1-DA1 ……….
LEA SI,DA1 LEA DI,ASC1
LOP1:MOV AL,[SI]
MOV [DI],AL INC SI INC DI HLT
5.下列程序段是比较AX,BX,CX中带符号数的大小,将最大的数放在AX中。请将程序填充完整。
CMP AX,BX NEXT XCHG AX,BX NEXT: AX,CX JGE OUT
AX,CX OUT:
…….
6.下面程序是查找STRING中是否有“A”这个字符,如果有则转向YES去执行;没有则转向NO去执行。请将程序填充完整。 MOV CX,20 MOV BX,-1 MOV AL,’A’ NEXT: BX CMP AL,STRING[BX] NEXT
JNZ YES:…….. ……..
JMP NO:……… ………
EXIT:RET
五、程序设计题
1.编写程序:从键盘接收一个小写字母,然后找出它的前导字符和后续字符,并按顺序输出这三个字符。
stack segment stack ;定义堆栈段 dw 512 dup(?)
;堆栈段有512字(1024字节)空间 stack ends ;堆栈段结束 data segment ;定义数据段 data ends
code segment ’code’ ;定义代码段 assume cs:code,ds:data,ss:stack
start: mov ax,data ;建立DS段地址 mov ds,ax push ds sub ax,ax push ax input: mov ah,7H int 21H cmpe:
cmp al,20H JE exit cmp al,61H JL input cmp al,7AH JG input print:
sub al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int 21H
;输出换行回车
mov dl,0AH mov ah,02H int 21H jmp input exit : ret
code ends END start
2.试编写一个程序,要求对键盘输入的小写字母用大写显示出来。
stack segment stack ;定义堆栈段 dw 512 dup(?)
;堆栈段有512字(1024字节)空间 stack ends ;堆栈段结束 data segment ;定义数据段 data ends
code segment ’code’ ;定义代码段 assume cs:code,ds:data,ss:stack
start: mov ax,data ;建立DS段地址 mov ds,ax
BEGIN: MOV AH, 1
INT 21H
CMP AL, ‘a’
JB STOP ;cf=1 且 zf =0 ,A >=B转移 CMP AL,’z’
JA STOP ;cf = 0 且 zf = 0 A>B 转移 SUB AL, 20H MOV DL, AL MOV AH, 2 INT 21H JMP BEGIN
STOP: RET ;利用功能调用返回DOS code ends ;代码段结束 end start
3.编写程序,要求从键盘上接收一个四位的16进制数,并在终端上显示出与它等值的二进制数。
4.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。
DATA SEGMENT
PATTERN DB 23H,24H,25H,26H DISPLAY DB 80 DUP(‘ ’),‘$’ DATE ENDS CODE SEGMENT ┇ CLD
LEA SI,PATTERN LEA DI,DISPLAY MOV CX,80 REP MOVSB MOV AH,09H
LEA DX,DISPLAY INT 21H RET CODE ENDS
5.编写4字节ASCII码数串‘3785’与1字节ASCII码‘5’相乘的程序。
6.有一长度为100个字符的字符串存放在以STRING为首址的字节单元中,其最后一个字符为换行字符(0AH),现要求将其全部设置成偶校验,试编制这一程序。
7.设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,求出A单元中给定数(<=15=的平方值送B单元保存。(14分)
8.已知三个带符号的字节数据a,b,c存放在ADR开始的连续单元中,若a,b,c同时为正数则FLAG单元置0,若同时为负数,则FLAG单元置1,否则FLAG单元置全1,请编写完整源程序。