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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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位无符号数累加的子程序有什么不妥吗?若有,请改正:

解答:

crazy PROC ;crazy PROC

push ax ;

xor ax,ax ;xor ax,ax

xor dx,dx ;xor dx,dx

again: add ax,[bx] ;again: add ax,[bx]

adc dx,0 ;adc dx,0

inc bx ;inc bx

inc bx ;inc bx

相关文档
最新文档