概述
1
mov al, 60h cmp al, 0bbh jb l2 l1: mov al, 0bbh l2: NOP | 分析: 1 jb因此是无符号数 2 60<bb 因此,成立 3 al最后为60h |
mov al, 60h cmp al, 0bbh JL l2 l1: mov al, 0bbh l2: NOP | 有符号数 60正数大于负数bbh,因此不满足条件 al结果为bbh |
xor al, al mov bl, 98h add bl, 88h jnc L2 L1: INC AL; L2: NOP | jnc判断有没有进位,无进位跳转, 这里有进位,因此不转。al=01 |
xor al, al mov bl, 98h add bl, 88h jnc L2 L1: INC AL; L2: NOP | 判断有没有溢出,明显有。 故同样不转。 |
mov al,1 mov bl, 72h add bl, 40h jc L2 L1: xor al, al L2: nop | 判断进位,没有,不转,=0 |
mov al,1 mov bl, 72h add bl, 40h jo L2 L1: xor al, al L2: nop | 72+40H 有溢出?这个时候,要把两个数 当做有符号数来看待。一个字节的最大有符号值时127,因此溢出了。结果=0 |
mov bl, 46h test bl, 01h jz l2 | test 是看看最低位是否为0,这里6=0110并不是1,因此jz不跳转。al被L1清空=0 |
mov bl, 46h test bl, 0FFh jNP l2 | test是与and一致的操作,只是同cmp一样不影响目的操作数,只影响标志寄存器FLAGS。 JP和JNP是判断1的个数是否是偶数。这里怎么判断呢?其实就是看多少个1,这里46=01000110,3个1,奇数,因此JNP转,就会让al=1了 |
2
mov al,x
cmp al,0
jz zero
jl nega
mov al,1
jmp ok
zero:
xor al, al
jmp ok
NEGA: MOV al, 0ffh
3 找三者得最大值:1240h(有符号数,9cc0h为负数)
4 把三个连续存放的单字节无符号数按递增次序重新存放在原存储位置
分析:
1 定义三个连续存放的单字节db数
2 从第一个开始与第二个比较,如果大于就交换位置,再与第三个比较,如果大于则交换位置。
3 第二个与第三个比较,如果大于,则交换位置。
4
我写的,估计是太复杂了,看看别人写的: | |
name example_7.3.1 dseg segment tt db 43,8,50 dseg ends sseg segment stack db 80h dup(0) sseg ends cseg segment assume cs:cseg, ds:dseg, ss:sseg start: mov ax, dseg mov ds, ax xor ax, ax ;................. mov al, tt cmp al, tt+1 ja chg1 chg2: mov al, tt+1 cmp al, tt+2 ja chg3 jmp ok chg1: mov bl, al mov al, tt+1 mov tt,al mov tt+1,bl jmp chg2 chg3: mov bl,al mov al, tt+2 mov tt+1, al mov tt+2, bl ;................. ok: mov ah, 4ch int 21h cseg ends end start | mov al,buf mov bl,buf+1 mov cl,buf+2 cmp al,bl JAE L1 XCHG al,bl L1: cmp al,cl JAE L2 xchg al,cl L2: cmp bl,cl JAE L3 XCHG bl,cl L3: mov buf+2,al mov buf+1, bl mov buf, cl ;display the result: lea dx, buf mov ah,9 int 21h 与我的区别:
|
5 单字节x,y,求x^2和Y^2,并将较大者送Z。
分析:
分别计算两者平方,然后存放到16位寄存器,然后比较大小。
我写的 | 推荐答案 |
x db 0a2h y db 3ah z dw ? mov al,x SAL ax,1 mov bx,ax mov al,y SAL ax,1 cmp ax,bx JBE YisBig mov z,ax jmp ok; YisBig: mov z,bx | mov al,x IMUL al mov bx,ax mov al,y IMUL al cmp ax,bx JBE YisBig mov z,ax jmp ok; YisBig: mov z,bx |
非常严重的错误:
|
6 求5字节无符号数D1和D2之和,要求考虑进位问题,结果送6字节变量D3.试编写程序!
分析:
- 5字节无符号数怎么表示:需要三字变量定义DF
- 如何考虑进位问题:如何将这个DF放入寄存器是个问题,放在edx:eax是可以的,就要用80386以上编程,但是怎么放还是问题,数据应该从数据区导入,应为add不允许两个内存数据直接相加。
- EAX放低四位,EDX放高2两位。
- 这个还真是不知道怎么表达:
me | Recommended |
写不出来 | D1 DB 91h, 12h, 13h, 14h, 15h ;the data should be 1514131291h (lower bit at first) D2 DB 37h, 18h, 19h, 20h, 21h D3 DB 6 DUP(0) mov al,D1 add al,d2 mov d3,al mov al, d1+1 adc al,d2+1 mov d3+1,al mov al, d1+2 adc al,d2+2 mov d3+2,al mov al, d1+3 adc al,d2+3 mov d3+3,al6 mov al, d1+4 adc al,d2+4 mov d3+4,al ;单独处理进位 mov al,0 adc al,0 mov d3+5, al |
|
7 将双字节有符号数D1,D2之差送变量D3,要求考虑溢出问题,结果用4字节表示,试编出程序。
分析:
- 双字节可以直接用DW,也可以用两个DB
- 考虑溢出问题?
me | Recommended |
mov al, d1 mov bl, d2 sub al,bl mov d3, al mov al,d1+1 mov bl,d2+1 sbb al,bl mov d3+1,al mov al,0 sbb al,0 mov d3+2,al | D1 dw -1291h d2 dw 0437h d3 dw 2 dup(0) mov ax,d1 sub ax,d2 jo done mov d3,ax test ax, 8000h jz done NOT d3+2 Done: |
错的不可理喻,完全没有把握问题要点 |
|
8 根据键盘输入的字符'a'~'c' ,分别显示'1 st', '2nd', '3rd',当输入的是其他字符,则需要重新输入。
分析:
- 用al接受键盘输入
- 判断输入字符是否满足a的要求,如果是,则显示对应字符(使用跳转表吧,show一下)
- 如果不是,判断是否是b,类似,然后判断是否是c,还不是的话,就重新接受键盘输入,如果给予提示就更好了。
me | recommended |
name example_7.8 dseg segment MS db 'please input again:','$'; MESS0 Db '1st','$' MESS1 Db '2st', '$' MESS2 Db '3st', '$' dseg ends sseg segment stack db 80h dup(0) sseg ends cseg segment assume cs:cseg, ds:dseg, ss:sseg start: mov ax, dseg mov ds, ax xor ax, ax ;................. mov ah,07h int 21h JUDGE: cmp al, 'a' jz SHOWA cmp al, 'b' jz SHOWB cmp al, 'c' jz SHOWC JMP SHOWHINT SHOWA: mov dx, offset mess0 JMP DISP SHOWB: mov dx, offset mess1 JMP DISP SHOWC: mov dx, offset mess2 JMP DISP SHOWHINT: mov dx, offset ms mov ah,09h int 21h mov ah, 07h int 21h jmp JUDGE DISP: mov ah,09h int 21h ;................. ok: mov ah, 4ch int 21h cseg ends end start | 几点区别:
|
至少结果应该是可运行的,看看推荐答案有什么特点: |
最后
以上就是温暖火龙果为你收集整理的丁辉汇编-7-分支程序设计-习题的全部内容,希望文章能够帮你解决丁辉汇编-7-分支程序设计-习题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复