3-17写出下列程序段执行后的结果:(AL)=?(DL)=?完成的是什么功能? MOV CL,4 MOV AL,87 MOV DL,AL AND AL,0FH OR AL,30H SHR DL,CL OR DL,30H
答:本题完成将57H转化成对应的ASCII码。
MOV CL,4 MOV AL,87 MOV DL,AL AND AL,0FH
OR AL,30H ;(AL)=37H SHR DL,CL
OR DL,30H ;(DL)=35H
3-18 用乘法指令和用传送、移位、相加指令分别实现y=10x的运算,设x=12H,分别编写这两个程序段。
3-19 写出下面指令序列完成的数学计算是什么?
MOV CL,3 SHL AX,CL SHL BL,CL SHL CX,CL SHL DH,CL
3-20 写出能代替下列重复串操作指令完成同样功能的指令序列 1 REP MOVSW 2 REP CMPSB 3 REP SCASB 4 REP LODSW 5 REP STOSB
3-21 欲将数据段中自AREA1的100个字数据搬到附加段中以AREA2开始的区中,用下面3种传送指令编写程序段:
1 用MOV指令 2 用基本串传送指令 3 用重复串传送指令
3-22 假定在数据段中已知字符串和未知字符串的定义如下 STRING1 DB‘MESSAGE AND PROCCESS’ STRING2 DB 20 DUP(?)
用串操作指令编写完成下列功能程序段(设DS和ES重叠) 1从左到右把STRING1中字符串搬到STRING2中 2从右到左把STRING1中字符串搬到STRING2中
3 搜索STRING1字符串中是否有空格。如有,记下第一个空格的地址,并放入BX中
4 比较STRING1和STRING2字符串是否相同。
3-23 下面两条短转移指令的转移地址ADDR1和ADDR2分别是多少(用十六进制表示)
1 0220 EB 0A JMP ADDR1 2 0230 EB F7 JMP ADDR2
3-24 NEAR JMP,SHORT JMP,LOOP和条件转移指令的转移范围是多少?
3-25 设AX和CX中的内容为无符号数,BX和DX中内容为带符号数,试用CMP指令和条件转移指令实现以下判断: 1若(AX)超过(CX),则转至BIGER 2 若(BX)>(DX),则转至BIGER 3 若(CX)低于(AX),则转至LESS 4 若(DX)<(BX),则转至LESS 5
3-26 有以下的调用嵌套,试画出下列各项调用或返回时的堆栈状态示意图 1 MAIN调用NEAR的SUBA过程(返回的偏移地址为0500H) 2 SUBA调用NEAR的SUBB过程(返回的偏移地址为0810H)
3 SUBB调用FAR的SUBC过程(返回的段地址为A310H,偏移地址为0400H) 4 从SUBC返回SUBB
若(AX)=(CX),则转至EQUAL
5 SUBB调用NEAR的SUBD过程(返回的偏移地址为0C00H) 6 从SUBD返回SUBB 7 从SUBB返回SUBA 8 从SUBA返回MAIN
3-27 试编写一个程序段,能完成下列数学表达式的功能 -1 (x≤-1) Y= 0 (-1 1 (x≥1) 3-28 8086的中断机构中共允许 级中断,其专用中断有为 。 3-29 试比较转移指令,调用指令和中断指令操作的异同处 个,分别