《汇编语言与接技术》习题解答(第三章).docVIP

  • 74
  • 0
  • 约1.21万字
  • 约 13页
  • 2016-10-03 发布于广东
  • 举报

《汇编语言与接技术》习题解答(第三章).doc

《汇编语言与接技术》习题解答(第三章)

3.16 解: mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2 int 21h ;显示 3.18 解: mov ax, bufX cmp ax, bufY jge done mov ax, bufY done: mov bufZ, ax 3.19 解: .model small .stack .data bufX dw -7 signX db ? .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jmp done next: mov signX,-1 done: .exit 0 end 3.20 解: mov dl,’2’ mov ax,bufX cmp ax,bufY je next1 dec dl next1: cmp ax,bufZ je next2 dec dl next2: mov ah,2 int 21h 3.22 编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。 ;wjxt322.asm .model small .stack .data b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据 num equ 10 ;数据个数 sum db ? ;预留结果单元 .code .startup xor si, si ;位移量清零 xor al, al ;取第一个数 mov cx, num ;累加次数 again: add al, b_data[si] ;累加 inc si ;指向下一个数 loop again ;如未完,继续累加 mov sum, al ;完了,存结果 .exit 0 end 3.30 解: lucase proc push bx mov bx,offset string cmp al,0 je case0 cmp al,1 jz case1 cmp al,2 jz case2 jmp done case0: cmp byte ptr [bx],0 je done cmp byte ptr [bx],’A’ jb next0 cmp byte ptr [bx],’Z’ ja next0 add byte ptr [bx],20h next0: inc bx jmp case0 case1: cmp byte ptr [bx],0 je done cmp byte ptr [bx],’a’ jb next1 cmp byte ptr [bx],’z’ ja next1 sub byte ptr [bx],20h next1: inc bx jmp case1 case2: cmp byte ptr [bx],0 je done cmp byte ptr [bx],’A’ jb next2 cmp byte ptr [bx],’Z’ ja next20 add byte ptr [bx],20h jmp next2 next20: cmp byte ptr [bx],’a’ jb next2 cmp byte ptr [bx],’z’ ja next2 sub byte ptr [bx],20h next2: inc bx jmp case2 done: pop bx ret lucase endp 习题3.1解答:参考教材(第60页) 习题3.6 问题: 给出你采用一个源程序格式书写的例题3.1源程序 解答: .model small .stack .data string db ’Hello, Assembly !’,0dh,0ah,’$’ .code start: mov ax,@data mov ds,ax mov dx,offset string mov ah,9 int 21h mov ax,4c00h int 21h end start 习题3.12解答:ORG伪指令 习题3.13解答:段地址和偏移地址属性,类型属性 习题3.26 问题: 过程定义的一般格式是怎样的?子程序开始为什么常有PUSH指令、返回前为什么常有POP指令?下面完成16位无符号数累加的子程序有什

文档评论(0)

1亿VIP精品文档

相关文档