MOV BL,6 AAD ;除法调整 DIV BL
MOV BH,AH ;余数保存在BH AND AX,000FH AAA ;商调整 MOV Z4,AX ;保存商
23 编程序。从键盘输入一个数字,去掉ASCII码后保存到BUFF单元。 查看正确答案 .model small .data buff db ? .code start:
mov ax,@data mov ds,ax
mov ah,1 ;键盘输入 int 21h
sub al,30h ;去掉ASCII码 mov buff,al mov ah,4ch int 21h end start
24 编程序。将键盘输入的小写字母变为大写字母显示在屏幕上。 查看正确答案 .model small .code start:
mov ah,1 ;键盘输入 int 21h
sub al,20h ;变为大写 mov dl,al mov ah,2 int 21h mov ah,4ch int 21h end start
25 X和Y都是字节型数据,编写将两数相加的结果显示出来的程序段。 查看正确答案 .model small .data x db 12h y db 34h .code start:
mov ax,@data mov ds,ax mov al,x
add al,y ;结果为46H mov ah,al ;AH=46H and al,0fh ;AL=06H mov cl,4
rol ah,cl ;AH=64H and ah,0fh ;AH=04H add ax,3030h ;AX=3436H mov bx,ax mov dl,bh ;显示4 mov ah,2 int 21h
mov dl,bl ;显示6 int 21h mov ah,4ch int 21h end start
26 编写程序,建立一个0~9的平方根表,查表可得某数的平方根。 查看正确答案 data segment
x db '0.000','1.000','1.414','1.732','2.000'
db '2.236','2.449','2.646','2.828','3.000' ;建立字符表 y db 5 dup(?) ;存放查到平方根 u db 3 ;要查的数 data ends code segment
assume cs:code,ds:data
start: mov ax,data mov ds,ax
mov al,u ;要查的数 mov cl,5
mul cl ;u*5=15(号单元开始) mov ah,0
mov bx,ax ;地址保存到bx mov si,0 let1:
mov al,x[bx] ;取出平方根数字 mov y[si],al ;存入y inc si inc bx
loop let1 ;循环取出5次 mov ah,4ch int 21h code ends end start
27 编写查表程序。建立一个班级姓名表,给出学号,可显示出其姓名。 查看正确答案 .model small .data
x1 db 'zhang yan $' ;姓名为10个字符宽度 x2 db 'li li $' x3 db 'wang lan $' x4 db 'zhao xue $' x5 db 'li jiang $' u db 3 ;要查的学号 .code start:
mov ax,@data mov ds,ax
mov al,u ;给出学号 mov cl,10
mul cl ;u*10=30(号单元开始) mov ah,0
mov dx,ax ;地址保存到dx mov ah,9 ;9号功能显示字符串 int 21h mov ah,4ch int 21h end start
28 编程实现公式计算Z=X/4+16Y。 查看正确答案 .model small .data x db 4 y db 6 z db ? .code start:
mov ax,@data mov ds,ax mov al,x ; mov cl,2 sar al,cl ; X/4 mov cl,4 mov bl,y sal bl,cl ;16Y add al,bl ;X/4+16Y mov z,al mov ah,4ch int 21h end start
29 编写程序段,将AL中的数乘以6,与CL相减后再除以3;把商保存到Y单元,余数保存到Y+1单元。 查看正确答案 .model small .data y db ?,? .code start:
mov ax,@data
mov ds,ax mov al,3 ;设al=3 mov cl,6 mul cl ;al*6 mov cl,4 ;设cl=4 sub al,cl ;相减 mov bl,3 idiv bl ; /3 mov y,al ;商 mov y+1,ah ;余数 mov ah,4ch int 21h end start
30 用简化的程序格式编程序,在屏幕的5行12列上显示红底白字的字符串“Come”。 习题五
1 转移指令分为哪两大类?转移指令的操作码和操作数如何表示? 2 写出与转移地址有关的寻址方式。
3 根据标志位转移的指令有哪些?执行什么操作时可以改变标志? 4 简述CPU实现分支的过程。
5 在短转移格式下,指令跳转的范围是多少? 6 在比较转移指令之前可以用什么指令进行判断?
7 比较转移指令为什么要分为无符号数比较和带符号数比较两类? 8 汇编语言可以控制和改变二进制某一位。有哪些指令可执行位操作? 9 TEST指令是如何实现判断的?请举例说明。 10 移位指令影响标志位吗?影响哪些标志位?
11 已知(BX)=7890H,写出指令实现逻辑左移2位。请问哪个标志位改变了? 查看正确答案 进位标志CF=1
12 分析下列程序段,给出执行结果: MOV AX,1234H MOV CL,3 SAR AX,CL AND AX,0FH ADD AL,30H MOV DL,AL MOV AH,2 INT 21H