|
主题 : : 第7章认真了一次,希望能过了测试 王爽 <汇编语言> 第2版 第7章 p160 [待解决] |
回复[ 3次 ]
点击[ 463次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-11-05 19:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-21 13:38 |
;王爽 <汇编语言> 第2版 第7章 p160 7.9
assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 8 dup(0)
stacksg ends
datasg segment
db '1. display '
db '1. brows '
db '1. replace '
db '1. modify '
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax ;设置ds指向datasg段
mov ax,stacksg
mov ss,ax ;设置ss指向stacksg段
mov sp,10
mov si,3 ;每行起始转换位置
mov bx,0 ;每行起始位置, 每增加一行起始位置+16
mov cx,4 ;设置外层循环4次
push cx ;将cx压栈
s0: ;外层
push cx ;每次循环cx减1,需要重新压栈保存cx
mov cx,4 ;设置内循环次数
s:
mov al,[bx][si] ;将ds:[3] 暂存al
and al,11011111B ;转换为大写
mov [bx][si],al ;传送回原位置
inc si ;si每次加1
loop s ;内循环4次后 完成了1行前4个字母的大写转换
pop cx ;从栈内pop出最近push的cx值
mov si,3 ;重新设置si为3,每行要转换的起始位置
add bx,16 ;bx+16转到下一行
loop s0 ;转到s0循环执行,cx=cx-1
codesg ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-11-10 21:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2010-11-01 15:17 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-12-06 20:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-16 17:02 |
呵呵,这是我的,类似!通过了
供参考
assume cs:aa,ss:bb,ds:cc
bb segment
dw 0,0,0,0,0,0,0,0
bb ends
cc segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
cc ends
aa segment
start:
mov ax,cc
mov ds,ax
mov ax,bb
mov ss,ax
mov sp,16
mov cx,4
mov bx,0
s0:
push cx
mov cx,4
mov si,3
s:
mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s
pop cx
add bx,16
loop s0
mov ax,4c00h
int 21h
aa ends
end start | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-12-13 14:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-01 22:13 |
|
|